2014-04-02 44 views
0

我成功地解析JSON它看起来像这样,在这种特定情况下表示具有2项的数组:这是一个有效的JSON?

{ 
    "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的开始是一个对象,而不是一个数组异常。

SOLUTION:
正确的方法是使用Map代替List

public class ItemsResponse { 
    private Map<String, Item> items; 
    // getters and setters 
} 
+0

两人都是有效的Json。如果你想迭代,第一个没问题。 –

+0

用于检查有效的josn ..检查http://www.jsoneditoronline.org/ –

+0

JSON是正确的请参阅http://jsonviewer.stack.hu/ –

回答

1

阅读艾哈迈德Dwaik '术士' here 的回答,您可以检查您的JSON here

+0

http:// stackoverflow。 com/a/22606973/2795864 – cgr

+0

是的,类别和键,这是我失踪。从来没有机会解析以这种方式格式化的json。谢谢。 –