改造:如何为特定的 API 调用设置自定义解串器?
Retrofit: How do I set a custom deserializer for a certain API calls only?
嗨,所以我几乎在任何地方都看到过这个例子,他们写了一个自定义的 GSON 反序列化器,然后将其添加到 RestAdapter
基本上是这样
public RestClient()
{
Gson gson = new GsonBuilder()
.registerTypeAdapterFactory(new ItemTypeAdapterFactory()) // This is the important line ;)
.setDateFormat("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSS'Z'")
.create();
RestAdapter restAdapter = new RestAdapter.Builder()
.setLogLevel(RestAdapter.LogLevel.FULL)
.setEndpoint(BASE_URL)
.setConverter(new GsonConverter(gson))
.setRequestInterceptor(new SessionRequestInterceptor())
.build();
apiService = restAdapter.create(ApiService.class);
}
但是,如果我的 API 服务不能对所有 API 调用使用相同的反序列化器怎么办?如果我只想要一个 API 调用来使用特定的反序列化器怎么办?
据我从一些测试中了解到,您被迫创建两个不同的 RestAdapter 实例,一个带有 Gson 转换器,一个没有。
嗨,所以我几乎在任何地方都看到过这个例子,他们写了一个自定义的 GSON 反序列化器,然后将其添加到 RestAdapter
基本上是这样
public RestClient()
{
Gson gson = new GsonBuilder()
.registerTypeAdapterFactory(new ItemTypeAdapterFactory()) // This is the important line ;)
.setDateFormat("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSS'Z'")
.create();
RestAdapter restAdapter = new RestAdapter.Builder()
.setLogLevel(RestAdapter.LogLevel.FULL)
.setEndpoint(BASE_URL)
.setConverter(new GsonConverter(gson))
.setRequestInterceptor(new SessionRequestInterceptor())
.build();
apiService = restAdapter.create(ApiService.class);
}
但是,如果我的 API 服务不能对所有 API 调用使用相同的反序列化器怎么办?如果我只想要一个 API 调用来使用特定的反序列化器怎么办?
据我从一些测试中了解到,您被迫创建两个不同的 RestAdapter 实例,一个带有 Gson 转换器,一个没有。