Наиболее эффективный способ анализа JSON с помощью Android

Я написал код для анализа ответа Google Distance Matrix JSON, полученного моей программой для Android. Единственный фрагмент данных, который меня интересует, находится в узле «расстояние» «значение».

Мой код работает, но, похоже, должен быть более простой способ сделать это. Узел значения расстояния вложен довольно глубоко в JSON, но действительно ли необходимо пройти через каждый уровень JSON, чтобы добраться до нужного поля?

Вот мой ответ в формате JSON:

{
"destination_addresses" : [
  "5660 Baltimore National Pike, Ingleside Shopping Center, Catonsville, MD 21228, USA"
],
"origin_addresses" : [ "Hilltop Cir, Baltimore, MD 21250, USA" ],
"rows" : [
  {
     "elements" : [
        {
           "distance" : {
              "text" : "3.1 mi",
              "value" : 4922 <--THE FIELD I WANT TO EXTRACT
           },
           "duration" : {
              "text" : "11 mins",
              "value" : 666
           },
           "status" : "OK"
        }
     ]
  }
],
"status" : "OK"
}

А вот код, который я использовал для получения значения расстояния:

    private double extractDistance(JSONObject json) {
    JSONArray rowsArray = null;
    double distanceInMiles = -1;
    try {
        // Getting Array of Distance Matrix Results
        rowsArray = json.getJSONArray("rows");
        JSONObject rowsObject = rowsArray.getJSONObject(0);//only one element in this array
        JSONArray elementsArray = rowsObject.getJSONArray("elements");
        JSONObject elementsObject = elementsArray.getJSONObject(0);//only one element in this array
        JSONObject distanceObject = elementsObject.getJSONObject("distance");
        distanceInMiles = (distanceObject.getDouble("value"))/1609.344; //distance in meters converted to miles
    }
    catch (JSONException e) {
        e.printStackTrace();
    }
    return distanceInMiles;
}

Спасибо!

7
задан pjd 12 March 2012 в 15:30
поделиться