我正在使用最新的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
我的问题:
json字符串有错误吗?
为什么要这样解析?
这是我第一次解析JSON,所以我不知道它是否解析得很好。
答案 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,你只是记录其他东西。