2011-12-22 55 views
2

使用iOS 5,你可以使用本机json支持。 我尝试了很多东西,但我不能解析如下: http://api.audioboo.fm/users/40956/audio_clips.jsoniOS 5 json - 深入json字符串?

我的目标是让每一个audio_clip也ID用等。

我已经试过了简单的JSON字符串的是:

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

         options:kNilOptions 
         error:&error]; 


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

但这个复杂的JSON字符串我不知道如何得到这些信息。

的希望

+1

有点澄清,这不是一个“复杂的JSON字符串“,而是一个”复杂的JSON对象“。您可以使用各种在线服务对其进行美化以使其更具可读性。 – Cyrille 2011-12-22 09:53:22

回答

2
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

thx工作完美!保存了我的一天:) – H3rrVorr4g3nd 2011-12-22 12:01:31

0

您的JSON的根目录包含一个body,它又会包含audio_clips答案:)。所以你应该做

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

然后你可以遍历audioClips数组。

0

我不能为你提供任何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

如果你想分析一个JSON对象的结构我推荐使用JSON编辑器......有很多可用的,一个简单的在线工具是这一个http://braincast.nl/samples/jsoneditor/ – AxelTheGerman 2011-12-22 10:06:59

+0

对于iOS程序员来说,Java代码不会很有帮助。 – 2011-12-22 20:38:48

+0

好吧,我知道这两种语言差别很大。但由于它不包含任何java特定的代码片段/库调用,它可以帮助理解处理JSON对象的方式 - 任何OO程序员都应该能够读取这种类型的伪代码 – AxelTheGerman 2011-12-22 22:04:11