我编写了一个脚本来使用 perl 和 json 从谷歌地理编码器中获取一些信息。下面的示例使用机场缩写获取地址信息。
use JSON;
use LWP::Simple;
my $geo_url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=PHL";
my $response = get($geo_url);
my $json = decode_json($response);
my $location = $json->{results}[0]->{geometry}->{location};
my $address = $json->{results}[0]->{formatted_address};
print "<br />Latitude: ".$location->{lat}." Longiude: ".$location->{lng};
print "<br />Address: ".$address;
我可以使用以下方法获取 address_component 数组的各个部分:
$json->{results}[0]{address_components}[0]->{short_name};
$json->{results}[0]{address_components}[1]->{short_name};
但我真正想做的是获取城市、州和邮政编码(postal_code)。为此,我需要遍历 address_components 并运行如下内容:
for (keys $json->{results}[0]{address_components}) {
if ($json->{results}[0]{address_components}[$i]->types[0] eq "postal_code") {
print "Zip: ".$json->{results}[0]{address_components}[$i]->{short_name};
}
}
显然这不是有效的代码,但我想解释一下我想要做什么。这是我无法工作的循环。我已经尝试了很多配置,即使数组项长度为 6,我仍然得到 1 的数组长度。