2017-09-26 91 views
-2

我是编程新手,我想构建一个应用程序,它从Google地图方向获取数据,并且第一个用户需要在列表视图中获取可用路线。如何获取多个对象和数组的JSON数据

我的JSON数据是这样的

{ 
    geocoded_waypoints: [], 
    routes: [ 
    { 
     bounds: { 

    }, 
    copyrights: "Map data ©2017 Google", 
    legs: [ 
    { 
     arrival_time: {}, 
     departure_time: {}, 
     distance: {}, 
     duration: { 
     text: "25 mins", 
     value: 1514 
     }, 
     end_address: "destination address, Croatia", 
     end_location: {}, 
     start_address: "start address", 
     start_location: {}, 
     steps: [ 
     { 
      distance: {}, 
      duration: {}, 
      end_location: {}, 
      html_instructions: "Walk to Vjesnik", 
      polyline: {}, 
      start_location: {}, 
      steps: [], 
      travel_mode: "WALKING" 
     }, 
     { 
      distance: {}, 
      duration: {}, 
      end_location: {}, 
      html_instructions: "Tram towards Dubec", 
      polyline: {}, 
      start_location: {}, 
      transit_details: { 
      arrival_stop: {}, 
      arrival_time: {}, 
      departure_stop: {}, 
      departure_time: {}, 
      headsign: "Dubec", 
      line: { 
       agencies: [ 
       { 
        name: "Zagrebački Električni Tramvaj", 
        phone: "011 385 60 100 001", 
        url: "http://www.zet.hr/" 
       } 
       ], 
       color: "#ffffff", 
       name: "Savski most - Dubec", 
       short_name: "4", 
       text_color: "#400000", 
       vehicle: {} 
      }, 
      num_stops: 9 
      }, 
      travel_mode: "TRANSIT" 
     }, 

这是在数组中的第一条路线,

我也找到了一些代码,但我不剪这是正确的,我需要去

duration: { 
text: "25 mins", 
value: 1514 
}, 
  • 这是腿阵列

然后在步骤数组中,我需要对象transit_details女巫有2个对象行和num_stops,并在对象行中,我有对象:名称,短名称和阵列机构。

我不确定这是否是正确的代码形式我的情况,我意识到我需要得到两个数组,父母和孩子。 我很抱歉,如果这个问题已经被问到,但你能指导我如何获得这些数据?我发现

Java代码是这样的,但我并修改它,已经把一些意见:

public class DirectionsJSONParser { 

    /** Receives a JSONObject and returns a list of lists containing latitude and longitude */ 
    public List<List<HashMap<String,String>>> parse(JSONObject jObject){ 

     List<List<HashMap<String, String>>> routes = new ArrayList<List<HashMap<String,String>>>() ; 
     JSONArray jRoutes = null; 
     JSONArray jLegs = null; 
     JSONObject jSteps = null; 

     try { 

      jRoutes = jObject.getJSONArray("routes"); 

      /** Traversing all routes */ 
      for(int i=0;i<jRoutes.length();i++){ 
       jLegs = ((JSONObject)jRoutes.get(i)).getJSONArray("legs"); 
       List path = new ArrayList<HashMap<String, String>>(); 


       /** Traversing all legs */ 
       for(int j=0;j<jLegs.length();j++){ 
        jSteps = ((JSONObject)jLegs.get(j)).getJSONArray("steps"); 
        jLegs = ((JSONObject)jRoutes.get(j)).getJSONArray("duration"); // --> this is my 

        /** Traversing all steps */ 
        for(int k=0;k<jSteps.length();k++){ 
         String polyline = ""; 
         polyline = (String)((JSONObject)((JSONObject)jSteps.get(k)).get("polyline")).get("points"); 
         List list = decodePoly(polyline); 
         jSteps = ((JSONObject)jSteps.get(k)).getJSONObject("transit_details"); // this is my 
         jSteps = ((JSONObject)jSteps.get(k)).getJSONObject("line"); // this is my 
         jSteps = ((JSONObject)jSteps.get(k)).getJSONObject("name"); // this is my 
         jSteps = ((JSONObject)jSteps.get(k)).getJSONObject("short_name"); // this is my 

        } 
        routes.add(path); 
       } 
      } 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     }catch (Exception e){ 
     } 

     return routes; 
    } 

    /** 
    * Method to decode polyline points 
    * Courtesy : http://jeffreysambells.com/2010/05/27/decoding-polylines-from-google-maps-direction-api-with-java 
    * */ 
    private List decodePoly(String encoded) { 

     List poly = new ArrayList(); 
     int index = 0, len = encoded.length(); 
     int lat = 0, lng = 0; 

     while (index < len) { 
      int b, shift = 0, result = 0; 
      do { 
       b = encoded.charAt(index++) - 63; 
       result |= (b & 0x1f) << shift; 
       shift += 5; 
      } while (b >= 0x20); 
      int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1)); 
      lat += dlat; 

      shift = 0; 
      result = 0; 
      do { 
       b = encoded.charAt(index++) - 63; 
       result |= (b & 0x1f) << shift; 
       shift += 5; 
      } while (b >= 0x20); 
      int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1)); 
      lng += dlng; 

      LatLng p = new LatLng((((double) lat/1E5)), 
        (((double) lng/1E5))); 
      poly.add(p); 
     } 

     return poly; 
    } 
} 

我没有得到我所需要的数据。

感谢您的帮助。

+0

看看这个博客http://wptrafficanalyzer.in/blog/driving-distance-and-travel-time-duration-between-two-locations-in-google-map-android-api-v2/你会得到距离和持续时间两个 – gaurang

+0

发送完成响应 –

回答

0

您可以使用JSON的API,如gson在Java解析JSON数据

+0

好的我确实发现gson和我得到的代码数据: – Milan

0

好吧,我二叔得到与GSON数据,但如何把它们在列表视图 我的代码是:

private void extractTransitDetails(TransitDetailsWrapper transitDetailsWrapper) { 
    List<Route> routes = transitDetailsWrapper.getRoutes(); 
    routes.size(); 
    for (Route route : routes) { 
     List<Leg> legs = route.getLegs(); 
     route.getOverviewPolyline(); 
     for (Leg leg : legs) { 
      List<Step> steps = leg.getSteps(); 
      leg.getDuration(); // vrijeme putovanja 
      leg.getDistance(); // udaljenost u km 
      for (Step step : steps) { 
       TransitDetails transitDetails = step.getTransitDetails(); 

       if (transitDetails != null) { 
        transitDetails.getLine(); 
        if (transitDetails.getLine() != null) { 
         transitDetails.getLine().getShortName(); 
         transitDetails.getLine().getName(); 
        } 
        transitDetails.getNumStops(); 
        transitDetails.getArrivalStop().getName(); 
        transitDetails.getDepartureStop().getName(); 
        transitDetails.getLine().getAgencies(); 

       } 

       Log.d("test", "majlajs"); 

      } 
     } 
    } 


} 
相关问题