Parsing JSON de los mapas google DistanceMatrix api en android

Soy nuevo al desarrollo de androide y nuevo a JSON. Estoy usando la api de la matriz de distancia de google maps. Tengo la descarga JSON en un JSONObject correctamente creo (robé el código para hacerlo desde otro post). Sin embargo no puedo parse analizar el JSON correctamente. He estado trabajando en esto durante unos días y estoy completamente perplejo. Hago la siguiente llamada a google a continuación

https://maps.googleapis.com/maps/api/distancematrix/json?origins=1600%20pennsylvania%20avenue&destinations=1500%20college%20street&mode=driving&units=imperial 

La salida es la siguiente:

 { "destination_addresses" : [ "1500 College Street, Beaumont, TX 77701, USA" ], "origin_addresses" : [ "1600 Pennsylvania Avenue, Hagerstown, MD 21742, USA" ], "rows" : [ { "elements" : [ { "distance" : { "text" : "1,306 mi", "value" : 2102536 }, "duration" : { "text" : "18 hours 48 mins", "value" : 67684 }, "status" : "OK" } ] } ], "status" : "OK" } 

Yo he tratado:

1.

 JSONArray jsonArray = jObject.getJSONArray("rows"); JSONArray routes = jsonArray.getJSONArray(0); stringBuilder.append(routes.getJSONObject(0).getString("text")); 

2.

 JSONArray jsonArray = jObject.getJSONArray("rows"); JSONObject routes = jsonArray.getJSONObject(0); stringBuilder.append(routes.getJSONObject("distance").getString("text")); 

3.

 JSONArray jsonArray = jObject.getJSONArray("elements"); stringBuilder.append(routes.getJSONObject(0).getString("text")); 

He intentado más, pero a mí me parece que deberían funcionar. Parecía que para mí las filas es una matriz y los elementos es una matriz también. Por lo tanto, sería necesario obtener las filas fuera de la JSONObject original, a continuación, obtener la matriz de elementos fuera de la matriz de filas a continuación, obtener el objeto distancia de esa matriz, a continuación, finalmente obtener el valor de texto y añadirlo a la cadena constructor I Creado anteriormente. ¿Me he equivocado? Gracias de antemano por cualquier ayuda.

Aquí está lo que funcionó conmigo

 //httpResponse is the output of google api JSONObject jsonRespRouteDistance = new JSONObject(httpResponse) .getJSONArray("rows") .getJSONObject(0) .getJSONArray ("elements") .getJSONObject(0) .getJSONObject("distance"); String distance = jsonRespRouteDistance.get("text").toString(); /* * For distance, below is only partial solution as the * output to string destination_addr will contain square brackets [] and double codes "" * Eg. [ "1600 Pennsylvania Avenue, Hagerstown, MD 21742, USA" ] * */ String destination_addr = new JSONObject(httpResponse) .get("destination_addresses") .toString(); 

[ACTUALIZAR]

Suponiendo que sólo tenemos una dirección de destino y no múltiples. Una pequeña manipulación de la secuencia nos consigue la secuencia de cadena limpia sin los códigos "y los corchetes []

 StringBuilder stringBuilderDestinationAddr = new StringBuilder(); for (int i = 0; i < destination_addr.length(); i++) if (destination_addr.charAt(i) != '[' && destination_addr.charAt(i) != ']' && destination_addr.charAt(i) != '"') stringBuilderDestinationAddr.append(pickup_addr.destination_addr (i)); String strCleanDestination = stringBuilderDestinationAddr.toString(); 
  • Los pines del mapa de la aplicación para Android no aparecen hasta que se toca la pantalla
  • No se puede ejecutar la aplicación con mapas en el dispositivo Android que ejecuta 4.0.3 ICS
  • ¿Se aplican los límites API de Google Maps a las aplicaciones de Android?
  • Android Maps API v2 dibujar círculo
  • Estoy tratando de buscar lugares cercanos como bancos, restaurantes, cajeros automáticos dentro del área dibujada en google maps en android
  • Uso de una clave de API de Google Maps para diferentes aplicaciones de Android
  • Forma de círculo antialise Google Maps V2 Android
  • Como llegar "Bus Service No" usando google api
  • ¿Cómo persistir Marcador de Google API Android v2?
  • Android google maps Polígono añadir círculo agujero
  • Google Maps API v2 invoca el comportamiento de hacer clic en mylocationbutton
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.