我必须处理动态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; } }
当状态为1(成功)时,将onResponse被触发,我可以得到一个ChatResponse对象。但是,当状态为0时,响应在JSON表示中为false,并且失败(onFailure触发)。
onResponse
onFailure
我想创建我的自定义转换器,这个问题有一个很好的示例,但是该示例适用于Retrofit 1。
我必须创建一个extends类Converter.Factory,但是我不知道如何重写此类的方法。
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); }
我现在如何自己解析JSON响应?
提前致谢。
我一直在寻找有关如何为Retrofit 2实现自定义转换器的简单示例。不幸的是没有找到。
我找到了这个例子,但至少对我而言,它太复杂了。
很高兴,我找到了解决方案。
此解决方案是要使用的GSON deserializers。
GSON deserializers
我们不需要创建自定义转换器,只需要自定义即可GSON converter。
GSON converter
这是一个很棒的教程。这是我用来解析问题中描述的JSON的代码:
Login Deserializer:定义如何将JSON解析为我们的目标类的对象(使用条件和我们需要的任何东西)。
定制GSON转换器:构建使用我们的定制解串器的GSON转换器。