使用Gson在Java中反编译嵌套的JSON数组

时间:2016-07-25 20:09:03

标签: java arrays json

像这样的东西。 http://jsonlint.com/说这是有效的。本例中简化了{}里面的Json。

[[0,{"ok":true},[]],[1,{"ok":false},[]]]

或者使用缩进:

[
    [0, {
            "ok": true
        },
        []
    ],
    [1, {
            "ok": false
        },
        []
    ]
]

这是对象JSONClass的类。

public class JSONClass {
    boolean ok;
}

如果我做对了,这个JSON字符串是数组数组,后者包含一些ID,实际的JSON数据和空数组。我怎么能反序化呢?

这不起作用。我也尝试用子类制作课程,但没有成功。

JSONClass[] t = g.fromJson(json, JSONClass[].class);

1 个答案:

答案 0 :(得分:0)

嗯,这里有一个数组数组。 Gson将允许您将JSON对象本身转换为您想要的类 - 但您必须分别在每个对象上调用gson.fromJson()。

给定包含json的字符串json,这样的东西应该可以工作:

Gson gson = new Gson();
JsonParser jsonParser = new JsonParser();
JsonArray jsonArray = jsonParser.parse(json).getAsJsonArray();

for (JsonElement e: jsonArray) {
    JSONClass o = gson.fromJson(e.getAsJsonArray().get(1), JSONClass.class);
}

基本上,JsonParser会将您的文本转换为JsonElement,这是Json数组和对象的Gson基类。我们可以迭代我们解析文本的JsonArray的元素,这些元素又是格式[id,object]的另一个数组 - 并且对于每个元素,取对象部分,并将其反序列化为POJO。