用gson反序列化json并进行改造

时间:2017-08-26 03:11:40

标签: android json gson retrofit2 rx-java2

我目前正在尝试反序列化包含数百个具有相同结构的对象的json对象,如下所示:

“data”: {
    “1” {
        “id” : 1
        “name” : “sample”
        },
        …
    “1000” {
        “id” : 1000
        “name” : “sample”
        }
}

我将如何使用gson,retrofit和rxjava进行此操作?我能想到的唯一方法就是做以下看似不切实际的事情。

public class Data {

    @SerializedName(“1”)
    private Item _1;
    …
    @SerializedName(“1000”)
    private Item _1000;

    Item getItem_1() {
        return _1;
    }

    void setItem_1(Item _1) {
        this._1 = _1;
    }
    …
    Item getItem_1000() {
        return _1000;
    }

    void setItem_1000(Item _1000) {
        this._1000 = _1000;
    }
}

2 个答案:

答案 0 :(得分:0)

您应该更改json格式的结构。使用数组(方括号)代替1000个对象(大括号)。

process.env

然后你的课程如下:

{
“items”: [
    {
    “id” : 1
    “name” : “sample”
    },
    …
    {
    “id” : 1000
    “name” : “sample”
    }
]
}

答案 1 :(得分:0)

使用"data"而不是为Map<String, Item>创建一个类。所有"1" ... "1000"都是地图键,您可以使用它们或只是忽略它们并使用Map.values()