2010-11-25 120 views
0

我會撒謊解析與SBJSON的JSON文件,但我有一點理解的問題? 這裏是我的JSON結構:解析SBJSON +語法

  • ID
  • 文本
  • 日期

所以對於爲例:

[{ 「ID」: 「1」, 「文」: 「blabla」,「date」:「1235432241」},{「id」:「2」,「text」:「blabla2」,「date」:「1235432241」}]

這裏是我發現的代碼解析J SON文件白衣SBJSON:


- (void)downloadJSONFile:(NSData *)data 
{ 
    SBJSON *jsonParser = [[[SBJSON alloc] init] autorelease]; 
    NSString *jsonString = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]; 

    id response = [jsonParser objectWithString:jsonString error:NULL]; 

    NSDictionary *feed = (NSDictionary *)response; 
    NSArray *nodes = (NSArray *)[feed valueForKey:@"keyValue"]; // here's I don't know what to put 

    for (int i = 0; i nodes.count; i++) { 

     NSDictionary *node = (NSDictionary *)[nodes objectAtIndex:i]; 
     NSLog(@"id = %@",[node objectForKey:@"id"]); 
    } 
} 

我不知道在我的節點陣列的valueforKey寫什麼...... 有人能向我解釋? 謝謝!

回答

1

您的鑰匙是:身份證,文本和日期。所以,如果你想用鑰匙ID解析的對象,然後在該行,你已經強調這將是:

valueForKey:@「ID」

+0

那麼在我的for循環中,我可以要求文本和日期鍵? – Pierre 2010-11-25 11:59:47

0

您應該以您提供的JSON樣本的外觀得到一個NSArray包含兩個NSDictionary。所以代碼應該是

NSArray *nodes = (NSArray *)response; 

不熟悉SBJSON,它可能實際上是一個NSDictionary。在這種情況下,你可以打印使用NSLog(@"%@", feed);詞典中,你應該得到一個打印出來,看起來像:

{ 
    nameOfKey = (
       { 
       "id" = 1; 
       "text" = "blablabla" 
... 

凡nameOfKey將是您正在尋找的keyValue。