解析谷歌地理编码导致找不到 JSONArray[0](它就在那里)



>编辑:我有另一个程序,它使用方向服务。它有效。当我在此地理编码工程中使用该代码时,它会引发相同的错误。(Eclipse, Java EE, Tomcat7(

作为参考,这里是请求

http://maps.googleapis.com/maps/api/geocode/json?address=vancouver,bc&sensor=true

这是代码

JSONObject obj = new JSONObject(s);
JSONObject res = obj.getJSONArray("results").getJSONObject(0);

字符串"s"是返回的json。这有效:

 System.out.println(obj.getJSONArray("results");

虽然一旦我尝试 getJSONObject(0( 我就会收到错误。在此之前,我一直在与方向服务合作,它发送了一个非常相似的结果。这对我有用。任何建议都非常感谢!这已经吃掉了我晚上几个小时,所以我想我会寻求一些帮助。

String lat = obj.getJSONArray("results").getJSONObject(0).getJSONObject("geometry").getJSONObject("location").getString("lat");

正如你在这里看到的:

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "1600",
               "short_name" : "1600",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "Amphitheatre Parkway",
               "short_name" : "Amphitheatre Pkwy",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Mountain View",
               "short_name" : "Mountain View",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Santa Clara County",
               "short_name" : "Santa Clara County",
               "types" : [ "administrative_area_level_2", "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" ]
            }
         ],
         "formatted_address" : "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
         "geometry" : {
            "location" : {
               **"lat"** : 37.4223329,
               **"lng"** : -122.0844192
            },
            "location_type" : "ROOFTOP",
            "viewport" : {
               "northeast" : {
                  "lat" : 37.4236818802915,
                  "lng" : -122.0830702197085
               },
               "southwest" : {
                  "lat" : 37.4209839197085,
                  "lng" : -122.0857681802915
               }
            }
         },
         "place_id" : "ChIJ2eUgeAK6j4ARbn5u_wAGqWA",
         "types" : [ "street_address" ]
      }
   ],
   "status" : "OK"
}

lat(Latitude)lng(Longitude) 的类型为 Double ,因此正确的代码(如果您需要纬度和经度作为 String s(是:

String latitude = Double.toString(jsonTree.getJSONArray("results").getJSONObject(0).getJSONObject("geometry").getJSONObject("location").getDouble("lat"));
String longitude = Double.toString(jsonTree.getJSONArray("results").getJSONObject(0).getJSONObject("geometry").getJSONObject("location").getDouble("lng")); 

相关内容

最新更新