JSON解析错了吗? [关闭]
Posted
技术标签:
【中文标题】JSON解析错了吗? [关闭]【英文标题】:Is JSON parsing wrong? [closed] 【发布时间】:2012-02-16 07:34:07 【问题描述】:我正在使用最新的 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,不知道解析好不好。
【问题讨论】:
为什么这不是您预期的输出?你觉得它有什么问题? 我已经用我的期望更新了我的问题。这是我第一次进行json解析所以我不知道它是否正确。 即使有了您的更新,我也看不出您认为有什么问题。根对象就是数组吧? 最上面的日志就是你看到的?这 is 是一本包含您期望的对的字典,但我不确定不一致的引号。请注意,现在 iOS 内置了 JSON 解析/创建,带有 NSJSONSerialization。 不知道是不是有什么问题。我问是不是有什么问题,因为这是我第一次做JSON解析。 【参考方案1】:这并没有错。它是字典中的字典数组,键为rules
。这正是你得到的。
【讨论】:
【参考方案2】:问题:
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,您只是在记录其他内容。
【讨论】:
我的问题是[data objectAtIndex:i]
是一个 NSDictionary,我不知道。所以,当我看到它的日志时,我认为 [data objectAtIndex:i]
是一个 NSString。对不起,是我的错。以上是关于JSON解析错了吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
我无法解析从 NSURL 会话返回的 JSON。我究竟做错了啥?
我使用 volley 库来解析 json 和 logcat 没有显示错误,但屏幕上仍然没有输出。有人能告诉我哪里出错了吗?