我正在尝试使用 Google Refine 从 Google Maps API JSON 中提取邮政编码。
我通过获取 URL 添加了一个新列:
"http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=" + escape(value, "url")
那么生成的JSON如下:
{ "results" : [ { "address_components" : [ { "long_name" : "44", "short_name" : "44", "types" : [ "street_number" ] }, { "long_name" : "Homer Street", "short_name" : "Homer St", "types" : [ "route" ] }, { "long_name" : "London", "short_name" : "London", "types" : [ "locality", "political" ] }, { "long_name" : "Greater London", "short_name" : "Gt Lon", "types" : [ "administrative_area_level_2", "political" ] }, { "long_name" : "United Kingdom", "short_name" : "GB", "types" : [ "country", "political" ] }, { "long_name" : "W1H 4NW", "short_name" : "W1H 4NW", "types" : [ "postal_code" ] }, { "long_name" : "London", "short_name" : "London", "types" : [ "postal_town" ] } ], "formatted_address" : "44 Homer Street, London, Greater London W1H 4NW, UK", "geometry" : { "location" : { "lat" : 51.51981750, "lng" : -0.16534040 }, "location_type" : "ROOFTOP", "viewport" : { "northeast" : { "lat" : 51.52116648029151, "lng" : -0.1639914197084980 }, "southwest" : { "lat" : 51.51846851970851, "lng" : -0.1666893802915020 } } }, "types" : [ "street_address" ] } ], "status" : "OK" }
在浏览了一些博客以找到相关代码后,我尝试使用此转换列...
value.parseJson().results[0]["formatted_address"]
...这对完整地址很有用。
当我尝试提取邮政编码时出现问题。我试着摆弄,但一无所获,然后我下载了 JSONPad 并将 JSON 粘贴到树形图中以获取路径:
value.parseJson().results[0]["address_components"][5]["long_name"]
问题在于,这对于某些条目来说是完美地提取了邮政编码,而对于其他条目来说却不是那么完美,它提取了其他东西——例如城镇或国家。
将 [5] 更改为 [6] 似乎可以提取其他地址的邮政编码,但是有没有办法只提取邮政编码,而不管它在结构中的哪个位置?
非常感谢任何帮助!