JSON解析错了吗?

时间:2012-02-16 07:34:07

标签: ios json parsing

我正在使用最新的SDK和XCode 4.2开发iOS应用程序。

要解析JSON响应,我正在使用此JSON解析器:https://github.com/stig/json-framework/

我从网络服务收到此JSON字符串(这是控制台日志):

2012-02-16 08:21:59.525 JReader[558:207] {"rules": [
{ "id_categoria": "3","categoria": "cat03" },{ "id_categoria": "2","categoria": "cat02" }
     ]
   }

JSON解析器使用这两个元素解析为NSArray这是控制台日志):

2012-02-16 08:22:04.910 JReader[558:207] {
    categoria = "cat03";
    "id_categoria" = 3;
}

2012-02-16 08:22:04.911 JReader[558:207] {
    categoria = "cat02";
    "id_categoria" = 2;
}

解析的Objective-C代码是:

- (IBAction)go:(id)sender
{
    parser = [[SBJsonParser alloc] init];
    NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://XXX"]];

    NSData* response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

    NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];

    // parse the JSON response into an object
    // Here we're using NSArray since we're parsing an array of JSON status objects
    NSLog(@"%@", json_string);
    NSDictionary* datos = [parser objectWithString:json_string error:nil];
    NSArray* data = [datos objectForKey:@"rules"];
    for (int i = 0; i < data.count; i++)
    {
        NSLog(@"%@", [data objectAtIndex:i]);
    }

}

我希望这些对有NSDictionary

  key           value
============  ============
categoria         cat03
id_categoria        3

我的问题:

  1. json字符串有错误吗?

  2. 为什么要这样解析?

  3. 这是我第一次解析JSON,所以我不知道它是否解析得很好。

2 个答案:

答案 0 :(得分:2)

这没有错。它是字典中带有键rules的字典数组。这正是你得到的。

答案 1 :(得分:1)

问题:

NSDictionary* datos = [parser objectWithString:json_string error:nil];
NSArray* data = [datos objectForKey:@"rules"];
for (int i = 0; i < data.count; i++)
{
    NSLog(@"%@", [data objectAtIndex:i]);
}

所以你要将数组记录在主字典中。你正确地解析了JSON,你只是记录其他东西。