2014-03-13 52 views
3

我有一个JSON像下面的例子,我想获得一些值,例如值。Java - 如何获取JSON数组中的对象值?

results.shipper.id 



{ 
    "results": [ 
     { 
      "updated": false, 
      "notification": false, 
      "some_data": { 
       "id": 15989, 
       "pieces": 0, 

      }, 
      "shipper": { 
       "updated": false, 
       "notification": false, 
       "id": 1587, 
       "parent": { 
        "updated": false 
       }, 

我想通过这种方式来获得值:

String test = shipmentData.getJSONObject("shipper").getString("id"); 

但它总是抛出一个异常。我认为,这个异常是由于我没有通过“结果”数组访问值而导致的。

我怎样才能轻松获得我需要的价值?我试图找到一些帮助者(Gson,fast-json等),但它似乎是一个相当复杂的使用(我想用JSON树来直接访问值“on-the-fly “或者像对象一样访问值,这意味着.. Object.InnerObject.value)。

所以问题是我该怎么做对吗?

感谢您的任何意见。

+0

“皮尔洋葱” 一个层在一个时间。首先将JSON转换为列表/地图。最外层的实体将是一个Map(“JSONObject”)。它包含一个键值为“结果”(其值为List(“JSONArray”))的条目。因此,从原始的JSOSNObject中获取名为“results”的JSONArray。列表中的条目是地图(再次是“JSONObject”),因此遍历列表并获取每个地图。每个Map包含一个名为“shipper”的键/值,其中值是另一个Map。该映射包含名为“id”的键/值对,其值为整数(而非字符串)。一次做这一步,在两者之间进行登录。 –

回答

8

JSON需要以被遍历以访问id

JSONArray results = shipmentData.getJSONArray("results"); 
JSONObject first = results.getJSONObject(0); 
JSONObject shipper = first.getJSONObject("shipper"); 
Integer id = shipper.getInt("id"); 

解析INT到字符串:

String id = String.valueOf(shipper.getInt("id"));