2015-11-17 52 views
-3

試圖使用json來解析來自rest服務的數據。響應的樣子:使用json-simple解析嵌套的JSON數組

{ 
    "locations": [ 
     "city" : "San Jose", 
     "state" : "Ca", 
    "job" : { 
     "site" : "Main Processing", 
     "region" : "USA" 
    } 
    ] 
} 
JSONParser jsonParser = new JSONParser(); 
JSONObject jsonObject = (JSONObject) jsonParser.parse(reader); 

JSONArray array = (JSONArray) jsonObject.get("locations"); 

for(int i = 0; i < array.size(); i++) { 
String site = array.getJSONObject(i).getString("site"); 
} 

我的問題是,我遇到了麻煩,從JSONArray對象的工作元素的引用。 「位置」引用是基本解析,但「作業」引用在數組中定義它時會給我帶來問題。

另外getJSONObject似乎不是JSONArray的有效方法。

這可以用json-simple庫來完成嗎?

+0

所示的示例數據是完全無效的。 JSON規範不允許使用未加引號的字符串鍵,或者將鍵值對作爲數組的成員,或者省略鍵 - 值對之間的逗號。 – Boann

+0

錯字,添加了正確的JSON響應。 –

+0

它仍然無效,因爲'locations'數組中有鍵值對。 – Boann

回答

0

getJSONObject方法由org.json.JSONArray類提供。 (不使用json-simple)。我無法在json-simple文檔中找到它。因此,使用org.json.*程序包導入,您可以執行:

JSONObject jsonObject = new JSONObject(jsonAsString); 
JSONArray array = jsonObject.getJSONArray("locations"); 

//You should check that array.length() >= 3 
JSONObject job = array.getJSONObject(2); 
String site = job.getString("site"); 
+0

這無法獲得「網站」標籤數據。基本上說錯誤是不存在的。有沒有特別針對嵌套對象的json庫? –

+0

是的。但我的代碼錯了。我更新了我的答案。 – ThomasThiebaud