我正在成功解析一个看起来像这样的json,在这种特殊情况下代表一个包含2个项目的数组:
{
"items": [
{
"id": 1,
"name": "John"
},
{
"id": 2,
"name": "Mark"
}
]
}
但是,我无法弄清楚如何解析这样的一个:
{
"items": {
"1": {
"id": 1,
"name": "John"
},
"2": {
"id": 2,
"name": "Mark"
}
}
}
正如你所看到的,第二个json与之前的json非常相似,除了items
之后它以" {"开头,这意味着它是一个不是数组的对象,但我需要将数据视为数组。
这是一个无效的json,还是我错过了什么?
修改
好的,我知道了。 json有效。
让我重新提出这个问题。
我实际上在寻找的是如何将第二个json放入项目列表中。
代码中的某处我正在这样做:
ItemsResponse itemsResponse = JsonMarshaller.fromJson(ItemsResponse.class, response);
和ItemsResponse类:
public class ItemsResponse {
private List<Item> items;
// getters and setters
}
但它失败了一个例外,它说json的开头是一个对象,而不是一个数组。
SOLUTION:
正确的方法是使用Map
代替List
:
public class ItemsResponse {
private Map<String, Item> items;
// getters and setters
}