我正在将Google Maps Geocoding API与适用于iOS的Google地方信息自动填充API结合使用来搜索地址并返回邮政编码。返回JSON数据时,我将其存储在NS字典中,然后使用条件来检查返回的组件数。在我的第一个测试地址中,zipcode在address_components中的索引8处返回,因此我使用了以下条件:
if ([[[[json objectForKey: @"results"]objectAtIndex:0] objectForKey:@"address_components"] count]>=8) {
//stuff
}
然而,在我的第二个测试地址上,邮政编码位于索引7.而不是试图修改我的条件以解决每个可能返回json数据的方式,我是否可以搜索json数据返回任何东西之前的邮政编码? zipcode的json数据(在地址组件键中)如下所示:
{
"long_name" = 20001;
"short_name" = 20001;
types = (
"postal_code"
);
我有办法搜索“postal_code”类型并为其返回“long_name”吗?或者,是否可以编写Geocoding API调用,只返回邮政编码(如果存在)?
答案 0 :(得分:1)
这是您的邮政编码:
for (NSDictionary *component in json[@"results"][0][@"address_component"]) {
if ([component[@"types"] containsObject:@"postal_code"]) {
return component[@"long_name"];
}
}
答案 1 :(得分:0)
我猜你必须用例如解析json。
NSDictionary *parsedDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&parseError];
然后检查字典。如果你有2,3 @“结果”怎么办?
基于Google Maps Geocoding API:
一般来说,只有一个条目 返回“results”数组以进行地址查找,尽管如此 地址查询时,地理编码器可能会返回多个结果 不明确的。
请注意,如果您愿意,通常需要解析这些结果 从结果中提取值。