0

我有一个包含以下内容的字符串:a

 {"friends":[
  {"uid":25,"fbUid":100004063444823,"name":"Andressa Albuquerque","score":100},
   {"uid":51,"fbUid":1297546080,"name":"Daniel Negri","score":5690}
]}

所以我得到了 NSArray 的 json 代码,代码如下:

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);
}
4

3 回答 3

1

第一的。不要使用 objectForKey、ArrayForKey、BoolForKey 或任何类似的东西。现代 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[@"keyThatIsNotInDict"]并且密钥不在字典中,你将得到 nil 作为结果。

于 2013-10-15T05:03:22.710 回答
0

使用此代码:

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]];
             }
         }

在这里您可以获取 FriendsArrayfinal 中的所有对象。如果您想访问特定对象而不是使用:

 NSString *uid=[NSString stringWithFormat:@"%@",[[friendsArrayFinal objectAtIndex:0] valueForKey:@"uid"]];
于 2013-10-15T04:46:13.550 回答
0

您可以访问如下值

for(NSDictionary *item in friendsArrayFinal) {
  NSLog(@"Item: %@", item);
  NSLog(@"%@",[item valueForKey:@"uid"]);
  NSLog(@"%@",[item valueForKey:@"fbUid"]);
  NSLog(@"%@",[item valueForKey:@"name"]);
  NSLog(@"%@",[item valueForKey:@"score"]);
}
于 2013-10-15T04:20:07.783 回答