2017-10-16 115 views
-3

我想读取JSON,但我得到一些错误,因为这有一个“子对象”内的JSON。使用org.json阅读Json

{ 
    "orders": [{ 
     "code": "foo", 
     "channel": "foo", 
     "placed_at": "foo", 
     "updated_at": "foo", 
     "total_ordered": 000.00, 
     "interest": 0.0, 
     "discount": 0.0, 
     "shipping_cost": 0.0, 
     "shipping_method": "foo", 
     "estimated_delivery": "foo", 
     "estimated_delivery_shift": null, 
     "shipping_address": { 
     "full_name": "Test", 
     "street": "address", 
     "number": "00", 
     "detail": "foo", 
     "neighborhood": "foo", 
     "city": "foo", 
     "region": "foo", 
     "country": "foo", 
     "postcode": "foo", 
     "phone": "foo", 
     "secondary_phone": "foo" 
    }] 
    } 

当我尝试读取里面的 “shipping_address” 元素, 我得到这个错误: “的getString

Exception in thread "main" org.json.JSONException: JSONObject["shipping_address"] is not a JSONArray. 
at org.json.JSONObject.getJSONArray(JSONObject.java:623) 
at br.com.ibolt.tdd.JsonRead.main(JsonRead.java:44) 

使用 ”getJSONObject(“ shipping_address)解决(” FULL_NAME “)” 感谢你@djbrown

+0

好吧,这显然不是一个数组...使用正确的方法获取对象 –

+0

使用'JSONObject.getJSONObject(String name)' –

+1

'shipping_address' - 'JSONObject','orders' - 'JSONArray' – Pijotrek

回答

0

正确的JSON是:

{ 
    "orders": [{ 
     "code": "foo", 
     "channel": "foo", 
     "placed_at": "foo", 
     "updated_at": "foo", 
     "total_ordered": "000.00", 
     "interest": 0.0, 
     "discount": 0.0, 
     "shipping_cost": 0.0, 
     "shipping_method": "foo", 
     "estimated_delivery": "foo", 
     "estimated_delivery_shift": null, 
     "shipping_address": { 
      "full_name": "Test", 
      "street": "address", 
      "number": "00", 
      "detail": "foo", 
      "neighborhood": "foo", 
      "city": "foo", 
      "region": "foo", 
      "country": "foo", 
      "postcode": "foo", 
      "phone": "foo", 
      "secondary_phone": "foo" 
     } //missing 
    }]  
} 

你错过了一个支撑。

我也认为字段"total_ordered"应该有双引号。

0

您的JSON是无效

“shipping_address”:{< ===没有关闭

正确的是:

{ 
    "orders": [ 
    { 
     "code": "foo", 
     "channel": "foo", 
     "placed_at": "foo", 
     "updated_at": "foo", 
     "total_ordered": 000.00, 
     "interest": 0.0, 
     "discount": 0.0, 
     "shipping_cost": 0.0, 
     "shipping_method": "foo", 
     "estimated_delivery": "foo", 
     "estimated_delivery_shift": null, 
     "shipping_address": { 
     "full_name": "Test", 
     "street": "address", 
     "number": "00", 
     "detail": "foo", 
     "neighborhood": "foo", 
     "city": "foo", 
     "region": "foo", 
     "country": "foo", 
     "postcode": "foo", 
     "phone": "foo", 
     "secondary_phone": "foo" 
     } 
    } 
    ] 
}