2016-04-03 49 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的树。