【发布时间】:2017-05-03 10:37:48
【问题描述】:
我的理解是 Retrofit 和它的 Gson 解析器期望格式为:
[
{},
{}
]
但是,如果我的 API 将所有内容包装到一个属性中,例如:
{
'data':[
{},
{}
]
}
如何让 Retrofit 从“数据”中开始解析内部对象?
【问题讨论】:
我的理解是 Retrofit 和它的 Gson 解析器期望格式为:
[
{},
{}
]
但是,如果我的 API 将所有内容包装到一个属性中,例如:
{
'data':[
{},
{}
]
}
如何让 Retrofit 从“数据”中开始解析内部对象?
【问题讨论】:
您可以让 Retrofit 接口方法返回您定义的自定义类型,该类型本身包含一个名为 data 的列表。
public class MyResponse {
private final List<Thing> data;
}
public interface MyApi {
@GET("/data")
Call<MyResponse> getThings();
}
这是最简单的解决方案。您可以改为在使用您的 Gson 实例注册的 TypeAdapter 中实现自定义反序列化逻辑,该实例忽略对象包装器,但它会更复杂,如果 API 曾经在该包装器中返回有用的东西,您将需要进行一些重构。
【讨论】: