2015-02-06 152 views
2

这是我的JSON结果,我需要获取持续时间数组中的text。如何得到它?如何从嵌套数组中提取JSON数据?使用android

{ 
    "routes" : [ 
     { 
     "bounds" : { 
      "northeast" : { 
       "lat" : 19.0759817, 
       "lng" : 80.27071789999999 
      }, 
      "southwest" : { 
       "lat" : 12.5100381, 
       "lng" : 72.8776544 
      } 
     }, 
     "copyrights" : "Map data ©2015 Google", 
     "legs" : [ 
      { 
       "distance" : { 
        "text" : "1,334 km", 
        "value" : 1333618 
       }, 
       "duration" : { 
        "text" : "17 hours 43 mins", 
        "value" : 63762 
       }, 
       "end_address" : "Mumbai, Maharashtra, India", 
       "end_location" : { 
        "lat" : 19.0759817, 
        "lng" : 72.8776544 
       }, 
       "start_address" : "Chennai, Tamil Nadu, India", 
       "start_location" : { 
        "lat" : 13.0826782, 
        "lng" : 80.27071789999999 
       }, 

我有这个代码试图这样我就可以得到整个distance数组,但我只需要在该text元素。

JSONArray one = reader.getJSONArray("routes"); 

       for (int i = 0; i < one.length(); i++) { 

       JSONObject two = one.getJSONObject(i); 

       JSONArray three = two.getJSONArray("legs"); 
       for (int j = 0; j < three.length(); j++) { 

        JSONObject four = three.getJSONObject(j); 

        String str_long_name=four.getString("distance"); 

       } 

       } 

,所以我试图修改这样

JSONArray one = reader.getJSONArray("routes"); 

     for (int i = 0; i < one.length(); i++) { 

     JSONObject two = one.getJSONObject(i); 

     JSONArray three = two.getJSONArray("legs"); 
     for (int j = 0; j < three.length(); j++) { 

      JSONObject four = three.getJSONObject(j); 
      JSONArray five = four.getJSONArray("distance"); 
      for (int k= 0; k < five.length(); k++) { 

       JSONObject six = five.getJSONObject(k); 
       String str_long_name=six.getString("text"); 

      }     

      } 

     } 

的代码,但它不工作。它也没有显示任何错误。

+0

如果您收到错误,请交在这里。这将帮助我们解决您的问题。 – 2015-02-06 11:06:03

+0

我没有收到任何错误。应用程序挂起 – Thamaraiselvam 2015-02-06 11:07:27

回答

1

该行JSONArray five = four.getJSONArray("distance");是错误的。 "distance"JSONObject

请尝试下面的代码。

JSONObject five = four.getJSONObject("distance"); 
String str_long_name=five.getString("text"); 
System.out.println(str_long_name); 

下面是测试的完整代码

import org.json.JSONArray; 
import org.json.JSONObject; 

public class Test { 

public static void main(String[] args) { 
    String str = "{\"routes\":[{\"bounds\":{\"northeast\":{\"lat\":19.0759817,\"lng\":80.27071789999999},\"southwest\":{\"lat\":12.5100381,\"lng\":72.8776544}},\"copyrights\":\"Map data ©2015 Google\",\"legs\":[{\"distance\":{\"text\":\"1,334 km\",\"value\":1333618},\"duration\":{\"text\":\"17 hours 43 mins\",\"value\":63762},\"end_address\":\"Mumbai, Maharashtra, India\",\"end_location\":{\"lat\":19.0759817,\"lng\":72.8776544},\"start_address\":\"Chennai, Tamil Nadu, India\",\"start_location\":{\"lat\":13.0826782,\"lng\":80.27071789999999}}]}]}"; 
    JSONObject reader = new JSONObject(str); 
    JSONArray one = reader.getJSONArray("routes"); 

    for (int i = 0; i < one.length(); i++) { 

     JSONObject two = one.getJSONObject(i); 

     JSONArray three = two.getJSONArray("legs"); 
     for (int j = 0; j < three.length(); j++) { 

     JSONObject four = three.getJSONObject(j); 
     JSONObject five = four.getJSONObject("distance"); 
     String str_long_name=five.getString("text"); 
     System.out.println(str_long_name); 

      } 

    } 
} 
} 
+0

是它的工作。谢谢你亲爱的 – Thamaraiselvam 2015-02-06 11:13:32

+0

然后接受这个答案 – 2015-02-06 11:15:02

+0

我试着接受,但在6分钟内我们无法接受!这就是为什么迟到 – Thamaraiselvam 2015-02-06 11:18:58