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

Я написал некоторый код для анализа ответа JSON в формате Google Distance Matrix, полученного моей программой для 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; } 

Благодаря!

Solutions Collecting From Web of "Самый эффективный способ анализа JSON с помощью Android"

Если вы не хотите писать собственное регулярное выражение для поиска строки json, да, это будет лучший способ доступа к нему (и самый простой). Есть ли причина, по которой вы чувствуете, что вам нужно получить доступ к ней «более эффективно»?

Я рекомендую вам GSON (http://code.google.com/p/google-gson/), которые анализируют текст JSON в экземпляре класса java и могут преобразовать экземпляр класса в текст JSON

Джексон – еще один хороший сторонний парсер http://jackson.codehaus.org/ . Похоже, здесь есть сравнение, http://www.cowtowncoder.com/blog/archives/2009/09/entry_326.html .

Вот пример, проходящий с использованием дерева, но не уверен, что он легче, чем то, что вы уже делаете, http://wiki.fasterxml.com/JacksonTreeModel

Если вы хотите включить стороннюю библиотеку, вы можете проверить http://code.google.com/p/json-path/ .

Я знаю, что вы чувствуете прямо сейчас, у меня были те же проблемы с JSON-синтаксическим анализом на Android, где у нас нет функций @getValueforKey, которые встроены в iOS. Даже его так по-настоящему google должен понять это сейчас, но есть хорошая работа На Gson lib., Ищите Google Gson здесь для простого способа разобрать json

Вот неплохая игра: Gson tute