我必须处理动态JSON响应.
之前,我正在使用类和注释如下:
public class ChatResponse {
@SerializedName("status")
private int status;
@SerializedName("error")
private String error;
@SerializedName("response")
private Talk response;
public int getStatus() {
return status;
}
public String getError() {
return error;
}
public Talk getResponse() {
return response;
}
}
Run Code Online (Sandbox Code Playgroud)
当状态为1(成功)时,onResponse会触发,我可以获得ChatResponse对象.但是,当状态为0时,JSON表示中的响应为false,并且失败(onFailure被触发).
我想创建我的自定义转换器,这个问题有一个很好的例子,但该示例适用于Retrofit 1.
我必须创建一个扩展的类Converter.Factory,但我不知道如何覆盖此类的方法.
其实我有下一个:
@Override
public Converter<ResponseBody, ?> fromResponseBody(Type type, Annotation[] annotations) {
return super.fromResponseBody(type, annotations);
}
@Override
public Converter<?, RequestBody> toRequestBody(Type type, Annotation[] annotations) {
return super.toRequestBody(type, annotations);
} …Run Code Online (Sandbox Code Playgroud) 我刚刚在youtube上阅读本教程并尝试解释使用-v命令,IE为什么教程中的人使用-v命令?他使用命令,像这样,
docker run -v /var/lib/mysql --name=my_datastore -d busybox echo "my datastore"
Run Code Online (Sandbox Code Playgroud)
现在我理解IE上面的命令
my datastore
Run Code Online (Sandbox Code Playgroud)
为容器指定一个特定名称.
-v /var/lib/mysql
Run Code Online (Sandbox Code Playgroud)
上面的命令搜索busybox图像,如果没有找到它将从中拉出-v并在后台作为守护进程运行它.
执行run命令后,下面的行将回显到控制台.
docker run -v /var/lib/mysql --name=my_datastore -d busybox echo "my datastore"
Run Code Online (Sandbox Code Playgroud)
现在我不理解的部分如下:
my datastore
Run Code Online (Sandbox Code Playgroud)
为什么-v这里使用的命令以及--name=my_datastore指定路径的原因是什么?我很难理解为什么使用上述行以及在什么情况下使用?谁能解释一下?
我已经找了类似的问题,但它们与JQuery或任何其他库有关.
首先,我写了这个:
const printIn1Sec = (value) => {
return new Promise(resolve => {
setTimeout(() => {
console.log(value);
resolve();
}, 1000)
});
};
Run Code Online (Sandbox Code Playgroud)
并以这种方式使用它:
printIn1Sec(1)
.then(() => printIn1Sec(2))
.then(() => printIn1Sec(3));
Run Code Online (Sandbox Code Playgroud)
我认为then非常重要,因为它允许我们在承诺得到解决后立即执行.
但我正在寻找这样的事情:
printIn1Sec(1)
.printIn1Sec(2)
.printIn1Sec(3);
Run Code Online (Sandbox Code Playgroud)
我注意到我需要一个可以访问此printIn1Sec方法的对象.所以我定义了一个类:
class Printer extends Promise {
in1Sec(v) {
return this.then(() => this.getPromise(v));
}
getPromise(value) {
return new Printer(resolve => {
setTimeout(() => {
console.log(value);
resolve();
}, 1000)
})
}
}
Run Code Online (Sandbox Code Playgroud)
并以这种方式使用它:
Printer.resolve().in1Sec(1).in1Sec(2).in1Sec(3);
Run Code Online (Sandbox Code Playgroud)
我resolve从一开始就不得不承诺,以便开始连锁.但它仍然困扰着我.
您认为,有没有办法让它像以下一样工作?
printIn1Sec(1).printIn1Sec(2).printIn1Sec(3);
Run Code Online (Sandbox Code Playgroud)
我正在考虑一个新的类或方法,它可以接收这些值,存储它们,最后开始解析链.但它需要在最后调用aditional方法,以init为流程.
android ×1
converter ×1
docker ×1
ecmascript-6 ×1
es6-promise ×1
javascript ×1
json ×1
retrofit2 ×1