解析SBJSON +语法

时间:2010-11-25 11:45:13

标签: iphone objective-c json parsing

我会撒谎用SBJSON解析一个JSON文件,但我有一点理解问题? 这是我的JSON结构:

  • ID
  • 文本
  • 日期

例如:

[{ “ID”: “1”, “文本”: “布拉布拉”, “日期”: “1235432241”},{ “ID”: “2”, “文本”: “blabla2”, “日期” : “1235432241”}]

这是我发现的用于解析JSON文件的代码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"]);
    }
}

我不知道在我的nodes数组的valueforKey中要写什么... 有人可以向我解释一下吗? 谢谢!

2 个答案:

答案 0 :(得分:1)

您的密钥是:ID,文本和日期。因此,如果您希望使用密钥ID解析对象,那么在您突出显示的那一行中,它将是:

valueForKey:@ “ID”

答案 1 :(得分:0)

根据您提供的json示例,您应该得到一个NSArray,其中包含两个NSDictionary。所以代码应该是

NSArray *nodes = (NSArray *)response;

不熟悉SBJSON,实际上响应可能是NSDictionary。在这种情况下,你可以使用NSLog(@"%@", feed);打印字典你应该得到一个看起来像这样的打印:

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

nameOfKey将是您要查找的keyValue。