我正在构建一个使用Retrofit从Web服务获取信息的Android应用程序。给出的许多回复都有这种结构:
{
"status": 0,
"result": {
"101": {
"id": 101,
"name": "John",
"surname": "Doe",
"phone": 6235974002,
"email": "john@doe.com"
},
"118": {
"id": 118,
"name": "Peter",
"surname": "Parker",
"phone": 6589325074,
"email": "peter@parker.com"
},
"130": {
"id": 130,
"name": "Foo",
"surname": "Gar",
"phone": 6998531452,
"email": "foo@bar.com"
}
}
}
我如何模拟这种"结果"值?我试图将其设置为数组,但应用程序抛出异常。目前我对此回复的模型如下:
@Parcel
public class ActivityResponse
{
@SerializedName("status")
private int status;
@SerializedName("result")
private ArrayList<User> result;
public int getStatus () {
return this.status;
}
public void setStatus (int status) {
this.status = status;
}
public ArrayList<User> getResult () {
return this.result;
}
public void setResult (ArrayList<User> result) {
this.result = result;
}
}
答案 0 :(得分:0)
首先,从服务返回的数据不是很好 - 它看起来应该是一个集合而不是一个对象,因为ID已经存在于子对象中。无论如何,Map
是给出JSON响应的解决方案。
@SerializedName("result")
private Map<Integer, User> result;
然后,这应该允许您检索每个User
对象。