【问题标题】:Is it possible to parse json without creating CallAdapter in Retrofit2是否可以解析 json 而无需在 Retrofit2 中创建 CallAdapter
【发布时间】:2016-08-21 14:00:11
【问题描述】:

我在我的项目中使用了 retrofit2,我需要将一些 json 答案解析为自定义对象。所以我创建了反序列化器并在 GsonBuilder 中调用它

private final Gson _gson = new GsonBuilder()
    .registerTypeAdapter(DaysList.class, new DaysDeserializer())
    .create();

之后我定义了 Retrofit

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl(_activity.getString(R.string.config_api_url))
    .addConverterFactory(GsonConverterFactory.create(_gson))
    .build();

但有明确的改造服务

Call<DaysList> retrofitHolidaysRequest()

我遇到了一个例外。之后我将方法签名更改为服务方法,它变成了:

DaysList retrofitHolidaysRequest()

我还向 Retrofit.Builder 添加了我自己的 CallAdapter.Factory 并且一切都按我的需要运行:

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl(_activity.getString(R.string.config_api_url))
    .addConverterFactory(GsonConverterFactory.create(_gson))
    .addCallAdapterFactory(new ResponseCallAdapterFactory())
    .build();

所以问题是:是否可以在不定义自己的 CallAdapter 的情况下创建自己的反序列化器?如果有可能那我做错了什么?

【问题讨论】:

  • 如果你对我的问题投了反对票,请解释原因

标签: java android json gson retrofit2


【解决方案1】:

就像this answer 中提到的那样,我需要使用 RxJavaCallAdapterFactory。我不清楚为什么,因为我不使用 RxJava,但它运行良好

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多