2012-01-05 24 views
2

"JSON辞書です" からすべての値を取得します: [JSON objectForKey:@"artistlist "]私はこの構造を得ます:IOS JSONは、私はこのデータ構造を持っている

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

"もっと深く"行く方法はありますか?

どのように結果の構造を解析しますか?

値のリストを取得したり、パフォーマーの名前に直接アクセスしたいと考えています。たとえば、出演者の名前、アルバム、年などのタプルに複数の値がある場合はどうなりますか?これらの値にはどうすればアクセスできますか?

ありがとうございます。

答えて

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

再帰を使用する必要があります。たとえば、あなたが(NSArraysで動作するように修正しやすい)のみネストされたNSDictionariesを持っていると仮定すると:このように

- (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に対応する。

関連する問題