gson 如何解析包含无名称数组的JSON对象

mwkjh3gx  于 2022-11-06  发布在  其他
关注(0)|答案(2)|浏览(223)

我需要解析一个如下所示的JSON对象(它没有数组名称):

{
"id": "123123",
[{
"id": "456456",
"name": "name1",
"content": "content1"
}, {
"id": "789789",
"name": "name2",
"content": "content2"
}]
}

我有两个对象,看起来像这样:

public class MyFirstObject {
    private String id;
    private List<MySecondObject> lst_entries;
}

public class MySecondObject {
    private String id;
    private String name;
    private String content;
}

如果原始JSON没有MySecondObject的名称,我如何解析该对象的List?
我一直在stackoverflow中寻找类似的东西,但一直没能找到一个答案或一个类似于我的案例,这可能会有所帮助...
我会很感激你的帮助的。谢谢!

ymdaylpp

ymdaylpp1#

如果你坚持要解析无效的JSON,可以通过暴力来完成。使用正则表达式来分离id字符串和数组字符串,用它们来构造有效的JSON,然后转换为对象。
但是,这样的做法很不妥当,最好还是让提供商修改一下。

xiozqbni

xiozqbni2#

第一件事是你的JSON格式是错误的。我猜你打错了。所以你得到的是。

{
"id": "123123",
[{
"id": "456456",
"name": "name1",
"content": "content1"
}, {
"id": "789789",
"name": "name2",
"content": "content2"
}]
}

上述JSON中的第二个数组项缺少名称。而且您不能将没有名称的项放入json对象中。它应该始终位于名称和值对中。因此,如果您想使上述JSON有效,则应如下所示。

{
    "id": "123123",
    "users": [{
        "id": "456456",
        "name": "name1",
        "content": "content1"
    }, {
        "id": "789789",
        "name": "name2",
        "content": "content2"
    }]
}

这是一个有效的JSON,现在您可以轻松地解析它。

try {
        JSONObject obj = new JSONObject(jsonString);

    //getting the id
    String id = obj.getString("id");

    //getting the users
    JSONArray users = obj.getJSONArray("users");

    //users is a JSON array so you need to loop through it
    for(int i = 0; i<users.length(); i++){

        //getting every user from the array 
        JSONObject objUser = users.getJSONObject(i);

        //reading user values 
        String uid = objUser.getString("id");
        String name = objUser.getString("name");
        String content  = objUser.getString("content");

    }

} catch (JSONException e) {
    e.printStackTrace();
}

谢谢:)如果你想快速了解JSON,你可以在YouTube上查看我的7分钟JSON视频。Learn JSON in 7 Minutes

相关问题