2012-01-05 61 views
2

我有这样的数据结构得到的所有值: [JSON objectForKey:@"artistlist "]我得到这个结构:IOS JSON从 “JSON字典”

(
    { 
    performer = "Gate Zero"; 
}, 
    { 
    performer = nightech; 
}, 
    { 
    performer = "Marko Fuerstenberg"; 
} 
) 

有没有什么办法可以“更深”?

我将如何解析生成的结构?

我想直接获取值或访问表演者名称的列表。如果我在tupel中有几个值,例如表演者姓名,专辑,年份,该怎么办?我将如何访问这些值?

谢谢。

回答

9

是的,当你有[JSON objectForKey:@"artistlist "]后,你得到NSArrayNSDictionaries(稍有混淆!)。

NSArray *performersArray = [JSON objectForKey:@"artistlist"]; 
for (NSDictionary *performerDic in performersArray) { 
    NSLog(@"%@", [performerDic objectForKey:@"performer"]); 
} 

这应该产生每个表演者的名字。或者,您可以做for (NSUInteger i = 0; i < [performersArray count]; i++)并访问NSDictionary *performersDic = [performersArray objectAtIndex: i]。从那里,你可以类似地使用[performsDic objectForKey:@"performer"]

1

你将不得不使用递归。例如,假设你只有嵌套NSDictionaries(易修改与NSArrays工作):

- (void) getArtistFromJsonObject:(NSDictionary *)obj { 
    for (NSString *key in [obj allKeys]) { 
     id child = [obj objectForKey:key]; 
     if ([child isKindOfClass:[NSString class]]) { 
      // that's the actual string 
      // NSLog(@"Found artist: %@", child); // or do whatever needed 

     } else if ([child isKindOfClass:[NSDictionary class]]) { 
      [self getArtistFromJsonObject:child]; 
     } 
    } 
} 
2

像这样:

[[[JSON objectForKey:@"artistlist "] objectAtIndex: 1] objectForKey:@"performer"] 

它会给你"nightech"

{}对应于NSDictionary[]对应于NSArray