Android 改造和错误的数据合同

Android Retrofit and bad data contract

通常 RESTful 结束点 return 一个对象或所述类型对象的列表以及一些用于分页目的的附加数据。

但是,有趣的是,我正在使用的 API 将 return 混合类型对象列表。例如:

{
  "media": [
    {
      "id": 1,
      "type": "oranges",
      "Some type specific property": "foo"
    },
    {
      "id": 1,
      "type": "apples",
      "Some type specific property": "bar"
    }
   ]
}

改造是否可以通过反射来适应这一点,并正确挑选出不同类型的对象 return 使用相同的密钥? (如我们的示例 media

移动应用程序已经 运行 处于生产模式,适应这种 API 架构最不痛苦的方法是什么?

使用http://www.jsonschema2pojo.org/创建java个对象模型

使用改造

定义您的 api
public interface sampleApi {
@GET("/v1/endpoint")
void promoImages(Callback<CustomObject> callback);

创建适配器

 RestAdapter.Builder builder = new RestAdapter.Builder()
                .setEndpoint(BuildConfig.BASE_SERVER_ENDPOINT)
                .setClient(new OkClient(client));

 CustomApi api = builder.build().create(CustomApi.class);

致电api

  api.promoImages(callback);