我需要解析一个如下所示的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中寻找类似的东西,却找不到能够帮助我的答案或类似我的案例。
感谢您的帮助。谢谢!
答案 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,然后转换为对象。
但是,这种方法是非常不适当的。最好只是要求提供商进行修改。