-1

这是我的 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

请帮忙!

4

2 回答 2

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也是一个数组,因此您需要 aloop对其进行迭代。并且您需要的文本存在于distance对象中。

于 2013-09-12T05:03:33.447 回答
-1
    Here,why are you do this:

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

    why not :

    JSONObject object = array.getJSONObject(i);   

这是一篇可能对你有帮助的文章

于 2013-09-12T04:46:05.910 回答