2012-01-05 59 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