2012-11-28 100 views
1

我想解析這種使用許多數組和對象的json如何解析它。解析在ios中嵌套的對象和數組json

[ 
    { 
     "MusicData": [ 
      { 
       "user_music_id": "199", 
       "music_id": "2", 
       "music_name": "Country" 
      }, 
      { 
       "user_music_id": "200", 
       "music_id": "2", 
       "music_name": "Country" 
      } 
     ] 
    }, 
    { 
     "SportData": [ 
      { 
       "user_sport_id": "179", 
       "sport_id": "4", 
       "sport_name": "Hockey" 
      } 
     ] 
    }, 
    { 
     "HobbyData": [] 
    }, 
    { 
     "RelationData": [] 
    }, 
    { 
     "MovieData": [ 
      { 
       "user_movie_id": "144", 
       "movie_id": "6", 
       "movie_name": "Drama" 
      } 
     ] 
    }, 
    { 
     "BookData": [] 
    }, 
    { 
     "CarrerData": [ 
      { 
       "user_carrer_id": "186", 
       "carrer_id": "7", 
       "carrer_name": "Marketing" 
      }, 
      { 
       "user_carrer_id": "187", 
       "carrer_id": "8", 
       "carrer_name": "Sales" 
      } 
     ] 
    } 
] 

MyMusic是一個字典,它有數組有很多索引。

如何一個接一個地解析數據?使用標籤MyMusic,SportData等

我想使用此下面的代碼此JSON解析CarrerData:

musicTemp._id = [NSString stringWithFormat:@"%@",[[[responseDict objectAtIndex:0] valueForKey:@"MusicData"] valueForKey:@"user_music_id"]]; 
+1

一般答案:剝洋蔥。如果你不確定你在任何圖層上有什麼,請使用NSLog轉儲它並/或用isKindOfClass對其進行測試。通常不是一個好主意,試圖在一條長長的行中完成 - 將其分解,以便您可以使用調試器檢查中間結果。 –

回答

1

看來你跳過一個數組,嘗試用:

musicTemp._id = [NSString stringWithFormat:@"%@",[[[[responseDict objectAtIndex:0] valueForKey:@"MusicData"] objectAtIndex:0] valueForKey:@"user_music_id"]];` 

的 「{}」 表示字典
的 「[]」 表示數組

所以遍歷你可以做的對象:

NSArray* array=[[responseDict objectAtIndex:0] valueForKey:@"MusicData"]; 
    for (NSDictionary *dict in array) { 
     NSString *userMusicID=[dict objectForKey:@"user_music_id"]; 
     NSString *musicID=[dict objectForKey:@"music_id"]; 
     //etc 
    } 

你可以做同樣的與其他元素。