I am successfully parsing a json which looks like this, which in this particular case represents an array with 2 items:
{
"items": [
{
"id": 1,
"name": "John"
},
{
"id": 2,
"name": "Mark"
}
]
}
However, I can't figure out how to parse one like this:
{
"items": {
"1": {
"id": 1,
"name": "John"
},
"2": {
"id": 2,
"name": "Mark"
}
}
}
As you can see, the second json is pretty similar to previous one, except after items
it begins with "{", which means it is an object not an array, but I need that data to treat like an array.
Is this an invalid json, or I am missing something?
EDIT:
Ok, got it. The json is valid.
Let me please reformulate the question.
What I am actually looking for is how could I get the second json into a list of items.
Somewhere in the code I am doing this:
ItemsResponse itemsResponse = JsonMarshaller.fromJson(ItemsResponse.class, response);
and the ItemsResponse class:
public class ItemsResponse {
private List<Item> items;
// getters and setters
}
but it fails with an exception which says that the beginning of the json is an object, not an array.
SOLUTION:
The correct way is to use a Map
instead of the List
:
public class ItemsResponse {
private Map<String, Item> items;
// getters and setters
}