iOS 5 json - углубиться в строку json? - PullRequest
2 голосов
/ 22 декабря 2011

В iOS 5 вы можете использовать встроенную поддержку json. Я перепробовал много вещей, но я не могу разобрать следующее: http://api.audioboo.fm/users/40956/audio_clips.json

Моя цель - получить все аудио-клипы, а также идентификаторы и т. Д.

То, что я пробовал для простых строк json:

     NSDictionary* json = [NSJSONSerialization 
                      JSONObjectWithData:responseData //1

                      options:kNilOptions 
                      error:&error];


     latestBoo = [json objectForKey:@"audio_clips"];

Но с этой сложной строкой json я не знаю, как получить эту информацию.

Надеюсь на ответ :)

Ответы [ 3 ]

2 голосов
/ 22 декабря 2011
NSDictionary *parsedData = [NSJSONSerialization 
                  JSONObjectWithData:responseData //1

                  options:kNilOptions 
                  error:&error];

// Response Data is the JSON String...

NSLog(@"Parsed Data: %@", parsedData);

NSDictionary *bodyDictionary = [parsedData valueForKey:@"body"];

NSLog(@"bodyDictionary: %@", bodyDictionary);

NSArray *audioClipsArray = [bodyDictionary valueForKey:@"audio_clips"];

NSLog(@"Response array: %@", audioClipsArray);

В audioClipsArray теперь есть ваш массив со всеми элементами аудиоклипов.

0 голосов
/ 22 декабря 2011

Я не могу предоставить вам какой-либо код iOS, но поэтому фрагмент псевдокода в стиле java для доступа к этой информации:

// serialize string into json object
JSONObject json = serialize(responseData);


// request member "body" as json object
JSONObject body = json.getAsJsonObject("body");

// request member "audio_clips" as json array
JSONArray audio_clips = body.getAsJsonArray("audio_clips"); 

// iterate over json array
for(JSONObject audio_clip : audio_clips) {
     // access members of audio_clip, e.g. id
     int id = audio_clip.getInt("id");
}

надеюсь, это поможет
-axel

0 голосов
/ 22 декабря 2011

Корень вашего JSON содержит body, который в свою очередь содержит audio_clips. Так что вы должны сделать

NSArray *audioClips = [(NSDictionary *)[json objectForKey:@"body"] objectForKey:@"audio_clips"];

Затем вы можете перебирать массив audioClips.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...