我必须处理一个动态的
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被触发).
我想创建我的自定义转换器,而this question有一个很好的例子,但是这个例子就是Retrofit 1.
I have to创建一个扩展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实现自定义转换器,并且没有发现任何好处(
there is an example,但至少对我来说,这对我的purpouse来说太复杂了).
但是最后我找到了一个解决方案.该解决方案是使用GSON解串器.所以我们不需要一个自定义的转换器,我们只需要定制GSON转换器.
这是一个很棒的tutorial.这里是我的代码解析在我的问题中描述的JSON:
> Login Deserializer:定义如何将JSON解析为目标类的对象(使用条件和任何我们需要的).
> Custom GSON converter:构建使用我们自定义解串器的GSON转换器