2011-12-22 52 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