如何使用唯一ID解析json

时间:2016-04-03 20:47:44

标签: android json parsing

我在JSONObject中有这个json结构:

{
 "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)

*我替换了输出中的实际数据......

2 个答案:

答案 0 :(得分:0)

images元素不是数组。这是一个对象。你可以这样得到它:

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

然后你可以像这样迭代它的唯一键来获取与每个键相关联的对象:

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

答案 1 :(得分:0)

是的,如果是JSONArray,它会有方括号。您提供的示例是JSONObject树。