2014-10-09 46 views
0

我正在使用Google地图地理编码API与iOS的Google Places自动填充API一起搜索地址并返回邮政编码。当返回JSON数据时,我将它存储在NS Dictionary中,然后使用条件来检查返回的组件数。在我的第一个测试地址,邮编将返回在索引为8的address_components内,所以我用的是下面的条件:是否有可能搜索特定键的JSON数据?

if ([[[[json objectForKey: @"results"]objectAtIndex:0] objectForKey:@"address_components"] count]>=8) { 
//stuff 
} 

我第二次测试地址,但是,邮编是在指数7.不要试图修改我的条件以说明json数据可能返回的各种可能方式,是否有可能在返回任何内容之前专门搜索json数据以获取zip代码?为邮编(在地址组件键)JSON数据是这样的:

{ 
"long_name" = 20001; 
"short_name" = 20001; 
types = (
"postal_code" 
    ); 

有没有办法对我来说,搜索“POSTAL_CODE”类型,并返回“LONG_NAME”呢?或者,是否有可能编写仅返回邮编的Geocoding API调用(如果存在)?

回答

1

这是你的邮政编码:

for (NSDictionary *component in json[@"results"][0][@"address_component"]) { 
    if ([component[@"types"] containsObject:@"postal_code"]) { 
    return component[@"long_name"]; 
    } 
} 
+0

完美。那样做了。非常感谢。 – JayB127 2014-10-09 14:13:26

+1

您应该考虑为这些访问添加一些安全措施,以防万一您找回的数据没有“结果”或您希望匹配的其他密钥。 – 2014-10-09 14:19:40

+0

绝对如此。调试刚刚开始,我相信我会做很多。 – JayB127 2014-10-09 14:43:45

0

我想你要解析与例如JSON

NSDictionary *parsedDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&parseError]; 

,然后查了字典。因为如果你会有2,3 @“结果”呢?

基于谷歌地图地理编码API:

一般来说,在 只有一个条目的“结果”数组返回地址查找,虽然 地址解析器可能会返回多个结果时,地址查询是 暧昧。

请注意,如果您希望 从结果中提取值,通常需要解析这些结果。

相关问题