Android - Как проанализировать JSONObject и JSONArrays - PullRequest
0 голосов
/ 15 июня 2011

Моя сборка Android 2.2 Google API 8, я работаю с эмулятора.Я пытаюсь попробовать доступ к Location в этом объекте JSON.Я получаю это после того, как использую

 InputStream instream = entity.getContent();

 JSONObject myAwway = new JSONObject(convertStreamToString(instream));

Документы Google говорят, что он возвращает массив, но с окружающими фигурными скобками. Он выглядит как объект.

Мне нужно получить доступ к лат и лон в этом местеполя и сохраняются как двойные числа.

Я искал, но, похоже, нашел помощь только для простых файлов.

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "20059",
               "short_name" : "20059",
               "types" : [ "postal_code" ]
            },
            {
               "long_name" : "Washington D.C.",
               "short_name" : "Washington D.C.",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "District of Columbia",
               "short_name" : "DC",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "United States",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "Washington D.C., DC 20059, USA",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 38.924920,
                  "lng" : -77.0178720
               },
               "southwest" : {
                  "lat" : 38.9189910,
                  "lng" : -77.02261200000001
               }
            },
            "location" : {
               "lat" : 38.92177780,
               "lng" : -77.01974260
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 38.92510312068017,
                  "lng" : -77.01709437931984
               },
               "southwest" : {
                  "lat" : 38.91880787931983,
                  "lng" : -77.02338962068018
               }
            }
         },
         "types" : [ "postal_code" ]
      }
   ],
   "status" : "OK"
}

Ответы [ 2 ]

4 голосов
/ 15 июня 2011
JSONObject jObject = new JSONObject(convertStreamToString(instream));
JSONArray results = jObject.getJSONArray("result");
JSONObject geometry = results.getJSONObject(2);
JSONObject bounds = geometry.getJSONObject("bounds");
JSONObject northeast = geometry.getJSONObject("northeast");

double nLat = Double.parseDouble(northeast.getString("lat").toString());
double nLng = Double.parseDouble(northeast.getString("lng").toString());

Это должно дать вам широту / долготу для северо-востока в виде двойных чисел.Юго-восток такой же, просто замените северо-восток на юго-восток.

2 голосов
/ 15 июня 2011
JSONObject location = myAwway.getJSONArray("results").getJSONObject(0).getJSONObject("geometry").getJSONObject("location");
double lat = location.getDouble("lat");
double lng = location.getDouble("lng");

JSONArray 'results' - это, вероятно, массив, предложенный Google документами. Они только что завернули его в JSONObject со статусом, чтобы вы могли проверить его, прежде чем пытаться работать с возвращенным значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...