потреблял разобрал json с игрой!фреймворк - PullRequest
1 голос
/ 22 февраля 2012

Я хочу получить долготу и широту от json.Для этого я использую Google Maps API, чтобы получить json, затем помещаю его в JsonElement, но теперь я не могу понять, как читать эти значения (широта, долгота).

public static void getGeo(){
    HttpResponse res = WS.url("http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true").get();
    int status = res.getStatus();
    String type = res.getContentType();

    JsonElement json = res.getJson();
    JsonObject jsonObject = json.getAsJsonObject();
    //with a system out i can see that the json is parsed correctly
    System.out.print(jsonObject.get("results"));
}

проанализированныйJSON:

    {
  "status": "OK",
  "results": [ {
    "types": [ "street_address" ],
    "formatted_address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
    "address_components": [ {
      "long_name": "1600",
      "short_name": "1600",
      "types": [ "street_number" ]
    }, {
      "long_name": "Amphitheatre Pkwy",
      "short_name": "Amphitheatre Pkwy",
      "types": [ "route" ]
    }, {
      "long_name": "Mountain View",
      "short_name": "Mountain View",
      "types": [ "locality", "political" ]
    }, {
      "long_name": "California",
      "short_name": "CA",
      "types": [ "administrative_area_level_1", "political" ]
    }, {
      "long_name": "United States",
      "short_name": "US",
      "types": [ "country", "political" ]
    }, {
      "long_name": "94043",
      "short_name": "94043",
      "types": [ "postal_code" ]
    } ],
    "geometry": {
      "location": {
        "lat": 37.4219720,
        "lng": -122.0841430
      },
      "location_type": "ROOFTOP",
      "viewport": {
        "southwest": {
          "lat": 37.4188244,
          "lng": -122.0872906
        },
        "northeast": {
          "lat": 37.4251196,
          "lng": -122.0809954
        }
      }
    }
  } ]
}

какие-либо предложения, пожалуйста?

1 Ответ

4 голосов
/ 22 февраля 2012

Это должно помочь вам:

HttpResponse res = WS.url("http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true").get();

JsonElement json = res.getJson();
System.out.println("JSON: " + json);
//with a system out i can see that the json is parsed correctly
JsonArray jsArr = json.getAsJsonObject().getAsJsonArray("results");

for (JsonElement jsEl : jsArr)
{
  JsonObject locationObject = jsEl.getAsJsonObject().getAsJsonObject("geometry").getAsJsonObject("location");
  double lat = locationObject.getAsJsonPrimitive("lat").getAsDouble();
  double lng = locationObject.getAsJsonPrimitive("lng").getAsDouble();

  System.out.println("Lat is " + lat + " and lng is " + lng);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...