一尘不染

改装2的自定义转换器

json

我必须处理动态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触发)。

我想创建我的自定义转换器,这个问题有一个很好的示例,但是该示例适用于Retrofit 1。

我必须创建一个extends类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响应?

提前致谢。


阅读 217

收藏
2020-07-27

共1个答案

一尘不染

我一直在寻找有关如何为Retrofit 2实现自定义转换器的简单示例。不幸的是没有找到。

我找到了这个例子,但至少对我而言,它太复杂了。

很高兴,我找到了解决方案。

此解决方案是要使用的GSON deserializers

我们不需要创建自定义转换器,只需要自定义即可GSON converter

这是一个很棒的教程。这是我用来解析问题中描述的JSON的代码:

  • Login Deserializer:定义如何将JSON解析为我们的目标类的对象(使用条件和我们需要的任何东西)。

  • 定制GSON转换器:构建使用我们的定制解串器的GSON转换器。

2020-07-27