0

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
}
Andy Res
  • 15,963
  • 5
  • 60
  • 96

1 Answers1

1

Read the answer of Ahmad Dwaik 'Warlock' here You can check your json here

Community
  • 1
  • 1
cgr
  • 519
  • 1
  • 7
  • 20
  • Yep, categories and keys, that is what I was missing. Never had a chance to parse a json formatted in this way. Thank you. – Andy Res Apr 02 '14 at 11:08