我正在使用此JSON library通过以下方式从Google Geocoding获取位置:
let json = JSON(url: "https://maps.googleapis.com/maps/api/geocode/json?address=94127&key=MY_API_KEY")
print(json)
打印出来:
{ “结果”:[{ “几何”:{ “视口”:{ “东北”:{ “LAT”:37.7513029, “LNG”: - 122.442329}, “西南”:{ “LAT”:37.721569, “液化天然气”: - 122.472671}}, “界限”:{ “东北”:{ “LAT”:37.7513029, “液化天然气”: - 122.442329}, “西南”:{ “LAT”:37.721569, “液化天然气”: - 122.472671 },“location”:{“lat”:37.734646,“lng”: - 122.463708},“location_type”:“APPROXIMATE”},“formatted_address”:“旧金山,CA 94127,美国”,“类型”:[ “POSTAL_CODE”], “address_components”:[{ “类型”:[ “POSTAL_CODE”], “SHORT_NAME”: “94127”, “LONG_NAME”: “94127”},{ “类型”:[ “局部性”,“政治“],”short_name“:”SF“,”long_name“:”旧金山“},{”类型“:[”administrative_area_level_2“,”political“],”short_name“:”旧金山县“,”long_name“: “旧金山县”},{“类型”:[“administrative_area_level_1”,“political”],“short_name”:“CA”,“long_name”:“California”},{“types”:[“country”,“政治“],”short_name“:”美国“,”long_name“:”美国“}],”place_id“:”ChIJK9xbjZR9j4ARBsVPOdGWHs8“},”状态“:”确定“}
格式化后,为了获取位置,我需要深入研究"results" -> "geometry" –> "location" –>"lat"/"lng"
试图打印时:
print(json["results"]["geometry"]["location"]["lat"])
...我收到以下错误:
错误Domain = JSONErrorDomain Code = 500“不是对象”UserInfo = {NSLocalizedDescription = not object}
我做错了什么? 谢谢!
答案 0 :(得分:1)
问题是lat / lng不是Json对象,它们是Json数据。
尝试
print(json["results"]["geometry"]["location"].lat)
更新:
@Sulthan,感谢关于索引事情的评论。
print(json["results"][0]["geometry"]["location"].lat)
答案 1 :(得分:1)
就像@Sulthan提到的那样,"results"
是一个我需要选择索引的数组。
print(json["results"][0]["geometry"]...
@JianpingLiu向我暗示了正确的方向。要访问数据,我需要附加.data
。
最终的解决方案是:
print(json["results"][0]["geometry"]["location"]["lat"].data)