是否可以搜索特定密钥的JSON数据?

时间:2014-10-09 13:49:58

标签: ios objective-c google-maps-sdk-ios

我正在将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调用,只返回邮政编码(如果存在)?

2 个答案:

答案 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”数组以进行地址查找,尽管如此   地址查询时,地理编码器可能会返回多个结果   不明确的。

     

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