解析json内部数组-java

时间:2013-09-12 04:26:35

标签: java arrays json

这是我的json回复:

{    
   "destination_addresses" : [ "Perkinston, MS, USA" ],
   "origin_addresses" : [ "Sunnyvale, CA, USA" ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "3,586 km",
                  "value" : 3585861
                            },
               "duration" : {
                  "text" : "1 day 8 hours",
                  "value" : 115992
                            },
               "status" : "OK"
            }
         ]
      }
   ],
   "status" : "OK"
}

我想要的是,在解析后在列表中添加"text" : "3,586 km"。 我所尝试的是:

jsonObj = new JSONObject(response);
List<String> list = new ArrayList<String>();
JSONArray array = jsonObj.getJSONArray("rows");
System.out.println("size:"+array.length());
for(i = 0 ; i < array.length() ; i++){
JSONObject objects = new JSONObject(array.getJSONObject(i));
JSONArray element = objects.getJSONArray("elements");
JSONObject distance = new JSONObject(element.getJSONObject(i));
list.add(element.getJSONObject("").getString("text"));

我得到的错误是:Object["elements"] not found

帮忙吧!

2 个答案:

答案 0 :(得分:0)

将遍历for对象的array循环更改为此类。

for (int i = 0; i < array.length(); i++) {
    JSONObject objects = array.getJSONObject(i);
    JSONArray elements = objects.getJSONArray("elements");
    for (int j = 0; j < elements.length(); j++) {
        JSONObject element = elements.getJSONObject(i);
        list.add(element.getJSONObject("distance").getString("text"));
    }
}
System.out.println(list);

由于您的elements也是一个数组,因此您需要loop来迭代它。您所需的文本显示在distance对象中。

答案 1 :(得分:-1)

    Here,why are you do this:

    JSONObject objects = new JSONObject(array.getJSONObject(i));

    why not :

    JSONObject object = array.getJSONObject(i);   

here is an article可能对您有所帮助