我最近一直在使用Retrofit library,到目前为止我都喜欢它。但是,我遇到了API,它返回具有以下结构的响应:
"data":
{
"meta":
{
"code": 200
"data": "data"
},
"body": [
{
"id": "id",
"field1": "data",
"field2": "data"
},
{
"id": "id",
"field1": "data",
"field2": "data"
}]
}
假设我有以下课程:
public class Entity {
long id;
String field1;
String field2;
}
以及以下界面:
public interface EntityService {
@GET("/api/method")
void getEntities(Callback<List<Entity>> callback);
}
如果我想从响应中获取Entity
元素的data.body
个对象列表,那么使用Retrofit的正确方法是什么?我知道我可以在回调中传递Response
对象,并使用org.json
包或其他东西手动解析它,但还有更好的方法吗?
答案 0 :(得分:1)
为什么不创建一个代表数据的类,就像你已经完成了一半?这就是我和其他开发人员一起在多个应用程序中所做的事情:
public class Meta {
String code;
String data;
}
public class Data {
Meta meta;
List<Entity> body;
}
public interface EntityService {
@GET("/api/method")
void getEntities(Callback<Data> callback);
}
答案 1 :(得分:1)
您的结果中的额外数据似乎可以重复使用。你应该使用像这样的通用类:
public class Data<E> {
Meta meta;
E body;
public static class Meta {
int code;
String data;
}
}
然后你可以使用
Data<List<Entity>>
或任何你想要的东西:
public interface EntityService {
@GET("/api/method")
void getEntities(Callback<Data<List<Entity>>> callback);
}