2011-03-20 63 views
2

我只是在iOS中玩JSON解析器,它作爲一個(簡單)示例正常工作。但我是一個奇蹟怎麼會真正分析的東西(有點)更復雜,一個Twitter趨勢JSON,像這樣:在iOS中解析JSON(再次)

{ 
    "trends": { 
     "2011-03-13 11:42:17": [ 
      { 
       "events": null, 
       "query": "Fukushima", 
       "promoted_content": null, 
       "name": "Fukushima" 
      }, 
      { 
       "events": null, 
       "query": "Rebecca Black", 
       "promoted_content": null, 
       "name": "Rebecca Black" 
      }, 
      { 
       "events": null, 
       "query": "Pearl Harbour", 
       "promoted_content": null, 
       "name": "Pearl Harbour" 
      }, 
      ... 
      { 
       "events": null, 
       "query": "Magdalena Neuner", 
       "promoted_content": null, 
       "name": "Magdalena Neuner" 
      } 
     ] 
    }, 
    "as_of": 1300016537 
} 

如何將一個只返回前3個疑問?在這種情況下:福島,麗貝卡黑色珍珠港

使用示例代碼,它是這樣的:

for (int i = 0; i < [luckyNumbers count]; i++) 
    [text appendFormat:@"%@\n", [luckyNumbers objectAtIndex:i]]; 

這是一個簡單得多的飼料不過,能不能走近什麼我正在尋找同樣的方式?

我想返回「查詢」的價值:

所以我真的這樣做:

NSLog(@"%@", [[luckyNumbers objectForKey:@"trends"]); 

這當然記錄的關鍵「潮流」的內容,該怎麼辦我不僅要返回趨勢的第一個(也是唯一的)關鍵點,還要挖掘更多層次以返回「查詢」的內容?

我也試過這樣的事情:

NSString *date = [[[luckyNumbers valueForKeyPath:@"trends"] allKeys] description]; 
NSArray *trends = [luckyNumbers objectForKey:@"trends"]; 
NSLog(@"%@", [trends valueForKeyPath:date]); 

,但沒有去...

EDIT(aftet honcheng的答案):

因爲我想通過迭代「趨勢」的結果,我在做:

NSDictionary *luckyNumbers = [responseString JSONValue]; 
NSArray *keys = [[luckyNumbers objectForKey:@"trends"] allKeys]; 

for (int i =0; i < [keys count]; i++) { 

NSLog(@"%@", [keys objectAtIndex:i]); 


    } 

顯然有些問題,因爲我沒有得到任何結果。

+0

什麼JSON解析器是這樣的,到底是什麼?包含在iOS SDK中的JSON庫是私人和無證,你」我不打算使用它 – 2011-03-20 04:07:16

+0

[解析Twitter中的JSON供稿] IOS(http://stackoverflow.com/questions/5289162/parsing-twitter-json-feed-in-ios) – 2011-05-30 16:39:10

回答

3

JSON解析器通常會返回NSDictionary和NSArray等本機NSObject。解析後,你只需要把它當作一個新的對象。

[luckyNumbers allKeys]返回一個NSArray [ 「趨勢」, 「as_of」] [[luckyNumbers objectForKey:@ 「趨勢」] allKeys 「]返回一個NSArray [」 2011-03-13 11點42分17" 秒]

由於allKeys返回一個NSArray,你可以只使用一個for循環來讓所有的鑰匙。

+0

感謝您的回答,我編輯了這個問題 – 2011-03-20 10:58:26