2012-01-26 1 views
0

からJSONデータにアクセスするとき、私はObjective Cの中で解析しようと、次のJSONデータを持ってnull値を取得する - 私のコードは、下位レベルのオブジェクト値のためにNULLを返している - ユーザーID、姓とはのObjective C

完全なJSON次のとおりです。

{ 
    "members" : 
    [ 
     {"member" : {"userid":"1","FirstName":"ramesh","LastName":"babu"}}, 
     {"member" : {"userid":"2","FirstName":"ramesh2","LastName":"babu2"}}, 
     {"member" : {"userid":"3","FirstName":"ramesh3","LastName":"babu3"}} 
    ] 
} 

私のコードは次のとおりです。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    dispatch_async(kBgQueue, ^{ 
     NSData* data = [NSData dataWithContentsOfURL: kLatestKivaLoansURL]; 
     [self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES]; 
    }); 
} 

- (void)fetchedData:(NSData *)responseData { 
    //parse out the json data 
    NSError* error; 
    NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData //1 
                 options:kNilOptions 
                  error:&error]; 

    NSArray* members = [json objectForKey:@"members"]; //2 


    NSString *text1 = [json description]; 
    jsonSummary.text = text1; 

    NSEnumerator *e = [members objectEnumerator]; 
    NSArray *keys = [NSArray arrayWithObjects:@"userid", @"FirstName", @"LastName", nil]; 

    NSDictionary * member; 
    while (member = (NSDictionary *)[e nextObject]) { 
     // do something with object 
     // Iterate it 
     text1 = [member description]; 
     NSLog(@"MEMBER ROW DATA%@", text1); 
     for (id key in keys) { 

      text1 = [member description]; 
      NSLog(@"key: %@ value:%@ ", key, [member objectForKey:key]); 

     } 

    } 
} 

任意の助けをいただければ幸いです!

答えて

1

サンプルJSONデータによると、「members」配列には、それぞれが単一のキー「メンバー」を持つ辞書が含まれています。 「メンバー」キーの値には、下位レベルのメンバーデータを含む辞書が含まれます。

あなたのコードでは、下位レベルの値を持つ辞書は配列要素だと想定していますが、そうではありません。

「メンバー」キーの値を取得してから、下位レベルの値を取得する必要があります。

NSLog(@"key: %@ value:%@ ", key, [member objectForKey:key]); 

:この行を変更する

私はそれがあまり混乱にするために、変数名ビットを変更したいけれども

NSLog(@"key: %@ value:%@ ", key, 
    [[member objectForKey:@"member"] objectForKey:key]); 

はそれを行う必要があります。

+0

アンナ、ありがとう、私はキー値を得て、メンバーdictionar yがその中に 'メンバー'オブジェクトを持っていることがわかりました。以下は、動作したコードです。 –