是否可以在Retrofit2

时间:2016-04-27 10:19:34

标签: java android json gson retrofit2

我在我的项目中使用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的情况下创建自己的反序列化器?如果有可能那么我做错了什么?

1 个答案:

答案 0 :(得分:0)

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