2016-04-03 97 views
1

我有這樣的JSON結構的一個JSONObject:如何解析JSON具有唯一ID

{ 
"images": 
{ 
"-KEHe39xfHoRmK9gPxpv": 
    { 
    "image": "", 
    "imei": "000000000000000", 
    "latitude": "", 
    "longitude": "" 
    }, 
"-KEHe5BOpHz6WlKF_F5B": 
    { 
    "image": "", 
    "imei": "000000000000000", 
    "latitude": "", 
    "longitude": "" 
    }, 
"-KEHe73aFp59v5Y_mX0Z": 
    { 
    "image": "", 
    "imei": "000000000000000", 
    "latitude": "", 
    "longitude": "" 
    } 
} 
} 

正如你所看到的,鍵是唯一的。 我知道,當我做

jsonArray = jsonObject.getJSONArray("images"); 

...我能得到相應的鍵的值。

我的問題是我不知道密鑰。所以我不能把它們放到.getJSONArray()中以獲取我的值。

我試圖讓數組的數組

jsonArray = jsonObject.getJSONArray("images").getJSONArray(x); // x == 0 , 1 , 2 , 3 
String test = jsonArray.toString(); 
textView.setText(test); 

給我這個輸出

04-03 20:41:16.073 9080-9080/com.example.app W/System.err: org.json.JSONException: Value {"-KEHe8nN5iFyGCIXiuv-":{"image":"DATA","longitude":"DATA","latitude":"DATA","imei":"000000000000000"},"-KEHe5BOpHz6WlKF_F5B":{"image":"DATA","longitude":"DATA","latitude":"DATA","imei":"000000000000000"},"-KEHe39xfHoRmK9gPxpv":{"image":"DATA" 
04-03 20:41:16.073 9080-9080/com.example.app W/System.err:  at org.json.JSON.typeMismatch(JSON.java:100) 
04-03 20:41:16.077 9080-9080/com.example.app W/System.err:  at org.json.JSONObject.getJSONArray(JSONObject.java:548) 

* I輸出代替實際的數據...

+0

是的,如果有可能重寫該json,你最好返回一個jsonArray的圖像對象; – Eenvincible

回答

0

images元素不是一個數組。這是一個對象。你可以這樣說:

JSONObject images = jsonObject.getJSONObject("images"); 

然後你可以遍歷其獨特的按鍵像這樣得到與每個鍵關聯的對象的保持:

for (String key : images.keys()) { 
    JSONObject image : images.getJSONObject(key); 
} 
+0

這個答案與那一個https://stackoverflow.com/questions/9151619/java-iterate-over-jsonobject解決了我的問題。謝謝 – TSchieck

0

是的,如果它是一個JSONArray它會有方括號。你給的例子是JSONObject的樹。