我正在尝试将我的对象序列化如下:
import Foundation
struct User: Codable {
let username: String
let profileURL: String
}
let user = User(username: "John", profileURL: "http://google.com")
let json = try? JSONEncoder().encode(user)
if let data = json, let str = String(data: data, encoding: .utf8) {
print(str)
}
Run Code Online (Sandbox Code Playgroud)
但是在macOS上我得到以下内容:
{"profileURL":"http:\/\/google.com","username":"John"}
Run Code Online (Sandbox Code Playgroud)
(注意转义'/'字符).
在Linux机器上,我得到:
{"username":"John","profileURL":"http://google.com"}
Run Code Online (Sandbox Code Playgroud)
如何让JSONEncoder在macOS上返回未转义的表单?
我需要JSON中的字符串严格未转义.
我在最新的AndroidStudio预览版中使用了RxJava和Retrofit.我的项目启用了java 1.8 suport,如下所示:
compileOptions {
targetCompatibility 1.8
sourceCompatibility 1.8
}
Run Code Online (Sandbox Code Playgroud)
但是当编译并运行代码时,即使我有onError
处理程序,一旦发出请求,我就会收到此错误:
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/devtools/build/android/desugar/runtime/ThrowableExtension;
at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:281)
at retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:58)
at io.reactivex.Observable.subscribe(Observable.java:10179)
at retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:34)
at io.reactivex.Observable.subscribe(Observable.java:10179)
at io.reactivex.internal.operators.flowable.FlowableFromObservable.subscribeActual(FlowableFromObservable.java:31)
at io.reactivex.Flowable.subscribe(Flowable.java:12218)
at io.reactivex.internal.operators.flowable.FlowableOnBackpressureLatest.subscribeActual(FlowableOnBackpressureLatest.java:31)
at io.reactivex.Flowable.subscribe(Flowable.java:12218)
Run Code Online (Sandbox Code Playgroud)
即使我使用Maybe,Single或Observable,也会发生这种情况.如何解决这个问题?
我有一个项目包含另一个目标(框架),它是主项目的依赖项.该框架需要它自己的框架,所以我使用carthage添加它们.该项目在模拟器上编译并运行良好,但是在物理设备上运行时遇到以下错误:
dyld: Library not loaded: @rpath/Subframework.framework/Subframework
Referenced from: /private/var/mobile/Containers/Bundle/Application/LONG-ID/MyApp.app/Frameworks/MyAppSDK.framework/MyAppSDK
Reason: no suitable image found. Did find:
/private/var/mobile/Containers/Bundle/Application/LONG-ID/MyApp.app/Frameworks/MyAppSDK.framework/Frameworks/Subframework.framework/Subframework: mmap() error 1 at address=0x00798000, size=0x00060000 segment=__TEXT in Segment::map() mapping /private/var/mobile/Containers/Bundle/Application/LONG-ID/MyApp.app/Frameworks/MyAppSDK.framework/Frameworks/Subframework.framework/Subframework
Run Code Online (Sandbox Code Playgroud)
我试过这个,但唯一的解决方案是将Subframework添加到"嵌入框架"到顶级项目,这是不可行的.我已经尝试修改构建设置 - >链接 - >动态库安装名称,但它没有帮助.
怎样才能让它在iphone上运行?
我正在尝试使用MockWebServer和Robolectric对一些API调用进行单元测试.
我的测试类注释为:
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 23)
Run Code Online (Sandbox Code Playgroud)
但是,在尝试构建Retrofit实例时,我得到以下异常:
java.lang.NullPointerException
at android.os.Handler.__constructor__(Handler.java:229)
at android.os.Handler.<init>(Handler.java)
at retrofit2.Platform$Android$MainThreadExecutor.<init>(Platform.java:105)
at retrofit2.Platform$Android.defaultCallbackExecutor(Platform.java:97)
at retrofit2.Retrofit$Builder.build(Retrofit.java:556)
Run Code Online (Sandbox Code Playgroud)
我用来构建改造实例的代码:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(mMockServer.url(""))
.addConverterFactory(GsonConverterFactory.create())
.build();
Run Code Online (Sandbox Code Playgroud)
上面的例外是在打电话时返回的.build()
.
我该如何解决这个问题?
我正在创建嵌套请求,如下所示(省略了一些错误处理):
return Single.create((SingleOnSubscribe<String>) emitter -> getPages()
.subscribe(pages -> getPageData(emitter, pages), emitter::onError))
.compose(applySchedulers());
// ...
private void getPageData(SingleEmitter<String> emitter, List<Page> pages) {
service.getPage(pages.get(0).id)
.subscribe(emitter::onSuccess, e -> {
pages.remove(0);
getPageData(emitter, pages);
});
}
Run Code Online (Sandbox Code Playgroud)
我曾经有一个迭代解决方案,它产生了相同的结果.页面列表按顺序排序,应按原样处理.如果连接良好,这部分代码可以正常工作,但是如果我碰巧遇到了错误的连接java.io.InterruptedIOException: thread interrupted
.解决这个问题的好方法是什么?
编辑:
堆栈跟踪:
W/System.err: java.io.InterruptedIOException: thread interrupted
W/System.err: at okio.Timeout.throwIfReached(Timeout.java:145)
W/System.err: at okio.Okio$2.read(Okio.java:136)
W/System.err: at okio.AsyncTimeout$2.read(AsyncTimeout.java:237)
W/System.err: at okio.RealBufferedSource.read(RealBufferedSource.java:46)
W/System.err: at okhttp3.internal.http1.Http1Codec$ChunkedSource.read(Http1Codec.java:429)
W/System.err: at okio.RealBufferedSource.read(RealBufferedSource.java:46)
W/System.err: at okio.RealBufferedSource.exhausted(RealBufferedSource.java:56)
W/System.err: at okio.InflaterSource.refill(InflaterSource.java:101)
W/System.err: at okio.InflaterSource.read(InflaterSource.java:62)
W/System.err: at okio.GzipSource.read(GzipSource.java:80)
W/System.err: at okio.RealBufferedSource.read(RealBufferedSource.java:46)
W/System.err: at okio.ForwardingSource.read(ForwardingSource.java:35)
W/System.err: at …
Run Code Online (Sandbox Code Playgroud) 我有一个字节数组(原始),它们可以有随机值.我试图以最有效/最快的方式计算它们在数组中的出现次数.目前我正在使用:
HashMap<Byte, Integer> dataCount = new HashMap<>();
for (byte b : data) dataCount.put(b, dataCount.getOrDefault(b, 0) + 1);
Run Code Online (Sandbox Code Playgroud)
这个单行程需要大约500ms来处理长度为24883200的字节[].使用常规for循环至少需要600ms.
我一直在考虑构造一个集合(因为它们只包含每个元素中的一个),然后使用Collections.frequency()将它添加到HashMap ,但是从原语构造Set的方法需要几个其他调用,所以我是猜测它不是那么快.
完成每个项目发生次数的最快方法是什么?
我正在使用Java 8,如果可能的话,我宁愿避免使用Apache Commons.
我正在寻找一种方法来创建带有孔的自定义形状窗口,例如 BS-Player 的窗口:
灰色和蓝色部分之间的区域是透明且可点击的。我寻求实现类似的功能,例如有一个带有方形“孔”的方形窗口。这可以用 GTK(C/C++、Python 等)实现吗?
我在使用 URL 参数协议从命令提示符启动 chrome 时遇到问题chrome://
(示例chrome.exe chrome://settings
:)。结果是一个带有空白页面的新镀铬窗口。其他协议(文件、http、https 等)也可以工作。是否有任何解决方法可以chrome://
从终端启动协议?
我一直在使用以下任务来复制库:
task copyLibs(type: Copy, dependsOn: 'cleanLibs') {
from configurations.compile
into 'libs'
}
Run Code Online (Sandbox Code Playgroud)
但在新版本的 gradle 中,编译配置被实现所取代。我认为这就是configurations.compile 列表现在为空的原因。我尝试过直接引用configuration.implementation
,configuration.implementation.resolvedConfiguration
但这会产生以下错误:
Resolving configuration 'implementation' directly is not allowed
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用configurations.compile.resolvedConfiguration
我会得到org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingConfigurationResolver$ErrorHandlingResolvedConfiguration@5bb68e71
。
如何实现预期结果(将所有依赖项复制到“libs”文件夹)?
我在SPARQL中遇到了递归查询,我无法绕过它.我想得到一个实例" a
"(a hasParent b, b hasParent c, c hasParent d
)的所有祖先,所以b, c ,and d
如果实例是" a
" ,结果将是" ".
任何想法如何构建父母拥有另一个父母的父母的链接部分?(递归的深度未知)