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

时间:2019-06-12 08:02:38

标签: android json parsing gson

我需要解析一个如下所示的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的列表?

我一直在stackoverflow中寻找类似的东西,却找不到能够帮助我的答案或类似我的案例。

感谢您的帮助。谢谢!

2 个答案:

答案 0 :(得分:0)

第一件事是您的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

答案 1 :(得分:0)

如果您坚持要解析无效的JSON,则可以通过蛮力完成。使用正则表达式分隔id字符串和数组字符串,使用它们构造有效的JSON,然后转换为对象。
但是,这种方法是非常不适当的。最好只是要求提供商进行修改。