Android Retrofit和糟糕的数据合同

时间:2015-06-04 19:40:07

标签: android retrofit

正常情况下,RESTful端点返回一个对象或所述类型对象的列表以及一些用于分页的附加数据。

然而,有趣的情况是,我正在使用的API将返回混合类型对象的列表。例如:

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

改装是否可以通过反射来适应这种情况并正确选择使用相同键返回的不同类型的物体? (如我们的示例media

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

1 个答案:

答案 0 :(得分:1)

使用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);