Попытка получить значение элемента или самого себя внутри некоторого элемента в Json возвращает нуль - PullRequest
3 голосов
/ 13 декабря 2010

Здравствуйте, я пытаюсь получить значение элемента из JsonObject. я использую Java с Библиотека Gson.

вот соответствующая часть кода:

String s = "http://maps.googleapis.com/maps/api/directions/json?origin=30.065634,31.209473&destination=29.984177,31.440052&sensor=false";
URL url = new URL(s);

BufferedReader r = new BufferedReader(new InputStreamReader(
    ((HttpURLConnection) url.openConnection()).getInputStream()));

JsonStreamParser jsp = new JsonStreamParser(r);

JsonParser jp = new JsonParser();

JsonElement jsonElement =  jp.parse(r);

JsonObject jsonObject = jsonElement.getAsJsonObject();

System.out.println(jsonObject.get("summary"));

вот часть Json:

"status": "OK",   "routes": [ {
    "summary": "Mehwar Al Moneeb",
    "legs": [ {
      "steps": [ {
        "travel_mode": "DRIVING",
        "start_location": {
          "lat": 30.0655100,
          "lng": 31.2096600
        },
        "end_location": {
          "lat": 30.0654400,
          "lng": 31.2096000
        },
        "polyline": {
          "points": "mdovDksn}DLJ",
          "levels": "BB"
        },
        "duration": {
          "value": 1,
          "text": "1 min"
        },
        "html_instructions": "Head \u003cb\u003esouthwest\u003c/b\u003e on \u003cb\u003eOmar Toson\u003c/b\u003e toward \u003cb\u003eMohammed Roshdi\u003c/b\u003e",
        "distance": {
          "value": 9,
          "text": "9 m"
        }
      }

Когда я получаю верхний элемент «маршрутизирует» его нормально и печатает, он показывает, что внутри элемента, но когда я пытаюсь, например, получить элемент «резюме», как показано, возвращаемое значение равно нулю, то есть то, что отображается в вывод, поэтому впоследствии я не могу получить его значение. В чем дело? Как можно получить значение любого JsonElement? Пожалуйста, ответьте мне как можно скорее. Заранее спасибо.

1 Ответ

0 голосов
/ 13 декабря 2010

Routes - это массив javascript. Сводка - это свойство первого объекта в этом массиве, поэтому вам нужно использовать jsonObject.getAsJsonArray("routes").get(0).get("summary"); или его эквивалент. Я не работал с вашей библиотекой Java, но код JS будет jsonObject.routes[0].summary

Редактировать: Поиск Документация GSON и обновленный код.

...