Ios objective-c获取json值

Ios objective-c获取json值,ios,objective-c,json,Ios,Objective C,Json,我有一个字符串,内容如下:a {"friends":[ {"uid":25,"fbUid":100004063444823,"name":"Andressa Albuquerque","score":100}, {"uid":51,"fbUid":1297546080,"name":"Daniel Negri","score":5690} ]} 因此,我将json代码作为NSArray,代码如下: NSError *jsonParsingError = nil; NSData *f

我有一个字符串,内容如下:a

 {"friends":[
  {"uid":25,"fbUid":100004063444823,"name":"Andressa Albuquerque","score":100},
   {"uid":51,"fbUid":1297546080,"name":"Daniel Negri","score":5690}
]}
因此,我将json代码作为NSArray,代码如下:

NSError *jsonParsingError = nil;
NSData *friendsData = [friendsString dataUsingEncoding:NSUTF8StringEncoding];
NSArray *friendsArray = [NSJSONSerialization JSONObjectWithData:friendsData options:NSJSONReadingMutableContainers|NSJSONReadingAllowFragments error:&jsonParsingError];
NSArray *friendsArrayFinal = [friendsArray valueForKey:@"friends"];
直到这里一切都好!但现在我正在尝试获取所有内部数据。。。 我需要在一个循环中获取每个“uid”、“fbId”和“name”数据,但我不知道怎么做

如果我使用下面的代码,我会发现我的方法是正确的。但我不知道如何获得“物品”属性

for(NSDictionary *item in friendsArrayFinal) 
{
   NSLog(@"Item: %@", item);
}

您可以访问如下值

for(NSDictionary *item in friendsArrayFinal) {
  NSLog(@"Item: %@", item);
  NSLog(@"%@",[item valueForKey:@"uid"]);
  NSLog(@"%@",[item valueForKey:@"fbUid"]);
  NSLog(@"%@",[item valueForKey:@"name"]);
  NSLog(@"%@",[item valueForKey:@"score"]);
}
使用此代码:

NSDictionary *results=[NSJSONSerialization JSONObjectWithData:friendsData options:NSJSONReadingMutableLeaves error:nil];
if([[results valueForKey:@"friends"] isKindOfClass:[NSArray class]])
         {
             for(int i=0;i<[[results valueForKey:@"friends"] count];i++)
             {
                 [friendsArrayFinal addObject:[[results valueForKey:@"friends"] objectAtIndex:i]];
             }
         }

首先。不要使用objectForKey、ArrayWorkey、BoolWorkey或任何类似的东西。现代Objective-C语法提供了一种简单、可读的键索引表示法。用那个

看起来像这样

dict[@"key"];
当然,您可以传递字符串变量而不是文本

NSString * key = @"MY_SECRET_SUPER_LONG_KEY_THAT_I_DONT_WANT_TO_TYPE";
dict[key];
第二:

如果您知道要访问这些密钥,那么只需按名称访问它们即可

for(NSDictionary *friend in friendsArrayFinal) {
  friend[@"uid"]; 
  friend[@"fbUid"];
  friend[@"name"];
  friend[@"score"];
}
如果您不知道潜在的键,或者其中一些键可能丢失,则可以遍历这些键

for(NSDictionary *friend in friendsArrayFinal) {
  for(NSString * key in friend) {
    NSlog(@"key: %@",key);
    NSlog(@"value: %@",friend[key]);
  }
}
奖励答案:


如果您执行dict[@“keythaisnotindicate”]并且该键不在dict中,那么结果将为零。

这不是一个数组,我的意思是您的根对象是一个dict,任何您都必须使用valueForKey而不是ObjectForKey,因为您错误地将其转换为数组。请查看NSDictionary界面:
for(NSDictionary *friend in friendsArrayFinal) {
  for(NSString * key in friend) {
    NSlog(@"key: %@",key);
    NSlog(@"value: %@",friend[key]);
  }
}