【发布时间】:2014-04-02 10:43:21
【问题描述】:
我成功解析了一个看起来像这样的 json,在这种特殊情况下,它表示一个包含 2 个项目的数组:
{
"items": [
{
"id": 1,
"name": "John"
},
{
"id": 2,
"name": "Mark"
}
]
}
但是,我不知道如何解析这样的:
{
"items": {
"1": {
"id": 1,
"name": "John"
},
"2": {
"id": 2,
"name": "Mark"
}
}
}
如您所见,第二个 json 与前一个非常相似,除了 items 之后它以“{”开头,这意味着它是一个对象而不是数组,但我需要将这些数据视为数组.
这是一个无效的 json,还是我遗漏了什么?
编辑:
好的,我知道了。 json 有效。
让我重新提出这个问题。
我实际上在寻找的是如何将第二个 json 放入项目列表中。
在代码中的某处我正在这样做:
ItemsResponse itemsResponse = JsonMarshaller.fromJson(ItemsResponse.class, response);
还有 ItemsResponse 类:
public class ItemsResponse {
private List<Item> items;
// getters and setters
}
但它失败了一个异常,它说 json 的开头是一个对象,而不是一个数组。
解决方案:
正确的方法是使用Map 而不是List:
public class ItemsResponse {
private Map<String, Item> items;
// getters and setters
}
【问题讨论】:
-
两者都是有效的 Json。如果您想迭代,第一个很好。
-
检查有效的josn..检查jsoneditoronline.org
-
JSON 是正确的看到这个jsonviewer.stack.hu
-
要检查json的有效性,使用jsonlint.com
-
使用jsonlint.org检查一个json是否有效?