选择根元素(又名密钥或信封)

时间:2016-12-18 01:09:07

标签: android json api retrofit

我的理解是Retrofit和它的Gson解析器期望格式为:

[
    {},
    {}
]

但是,如果我的API将所有内容包装到以下属性中,该怎么办?

{ 
    'data':[
        {},
        {}
    ]
}

如何告诉Retrofit开始从数据内部解析内部对象?

1 个答案:

答案 0 :(得分:1)

您可以让您的Retrofit接口方法返回您定义的自定义类型,该类型本身包含一个名为data的列表。

public class MyResponse {
    private final List<Thing> data;
}

public interface MyApi {
    @GET("/data")
    Call<MyResponse> getThings();
}

这是最简单的解决方案。您可以在注册了TypeAdapter实例的Gson中实现自定义反序列化逻辑,忽略对象包装器,但它会更复杂,如果API返回了一些有用的东西,您需要进行一些重构在那个包装中。