改进JSON值的模型集

时间:2015-08-31 19:49:40

标签: java android json retrofit

我正在构建一个使用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;
    }
}

1 个答案:

答案 0 :(得分:0)

首先,从服务返回的数据不是很好 - 它看起来应该是一个集合而不是一个对象,因为ID已经存在于子对象中。无论如何,Map是给出JSON响应的解决方案。

@SerializedName("result")
private Map<Integer, User> result;

然后,这应该允许您检索每个User对象。