如何从嵌套的JSON响应中获取特定值?

时间:2014-10-07 10:43:20

标签: objective-c iphone json

我收到了JSON响应(下方已添加):

response : {

     A =  { 
             latitude = "0";
             longitude = "0";

          };

     B =  { 
             latitude = "0";
             longitude = "0";

          };
}

我需要获得lat,long的A,B,C,..值。并存储到一个数组中。在这里,我可以通过valueforkey :@"A"方法获得,但我不知道响应第一个对象可能是1,2,3,无论如何。请给我一个很好的解决方案来解决这个问题。

谢谢, 阿贾伊

2 个答案:

答案 0 :(得分:0)

试试这个

NSArray *firstLevelValues = [response allValues];
NSArray *lats = [firstLevelValues valueForKey:@"latitude"];
NSArray *longs = [firstLevelValues valueForKey:@"longitude"];

答案 1 :(得分:0)

NSDictionary有两种方法allKeysallValues。因此,如果您想要获取响应对象中的所有键,请使用以下语法:

NSArray *allKeys = [dict valueForKey:@"response"];

如果你想得到纬度和经度的值,那么迭代遍历allKeys for for循环。

NSDictionary *dict = @{@"response":@{@"A":@{@"latitude":@"0",@"longitude":@"0"},
                                     @"B":@{@"latitude":@"1",@"longitude":@"1"}}};

NSDictionary *response = [dict valueForKey:@"response"];
NSArray *allKeys = [dict valueForKey:@"response"];

for (NSString *keyName in allKeys) {
    NSLog(@"%@",[response objectForKey:keyName]);
    NSString *latitude = [[response objectForKey:keyName] objectForKey:@"latitude"];
    NSString *longitude = [[response objectForKey:keyName] objectForKey:@"longitude"];

}