使用 GSON 解析 JSON 数组

2022-08-31 09:17:38

我有一个这样的JSON文件:

[
    {
        "number": "3",
        "title": "hello_world",
    }, {
        "number": "2",
        "title": "hello_world",
    }
]

以前,当文件有根元素时,我会使用:

Wrapper w = gson.fromJson(JSONSTRING, Wrapper.class);

代码,但我无法思考如何对类进行编码,因为根元素是一个数组。Wrapper

我尝试过使用:

Wrapper[] wrapper = gson.fromJson(jsonLine, Wrapper[].class);

跟:

public class Wrapper{

    String number;
    String title;

}

但没有任何运气。否则,我如何使用此方法阅读此内容?

P.S 我已经使用了这个工作:

JsonArray entries = (JsonArray) new JsonParser().parse(jsonLine);
String title = ((JsonObject)entries.get(0)).get("title");

但我更愿意知道如何用这两种方法做到这一点(如果可能的话)。


答案 1

问题是由数组中放置的 JSON 对象末尾的逗号(在本例中是每个)引起的:

{
    "number": "...",
    "title": ".." ,  //<- see that comma?
}

如果删除它们,您的数据将成为

[
    {
        "number": "3",
        "title": "hello_world"
    }, {
        "number": "2",
        "title": "hello_world"
    }
]

Wrapper[] data = gson.fromJson(jElement, Wrapper[].class);

应该工作正常。


答案 2
Gson gson = new Gson();
Wrapper[] arr = gson.fromJson(str, Wrapper[].class);

class Wrapper{
    int number;
    String title;       
}

似乎工作正常。但是字符串中有一个额外的逗号。,

[
    { 
        "number" : "3",
        "title" : "hello_world"
    },
    { 
        "number" : "2",
        "title" : "hello_world"
    }
]