NSJSONSerialization无法识别

时间:2013-04-17 17:21:16

标签: ios objective-c json serialization

我试图将json字符串解析为字典。为此我使用以下代码:

NSDictionary* json = [NSJSONSerialization JSONObjectWithData:json_string];

这给了我以下错误:

+[NSJSONSerialization JSONObjectWithData:]: unrecognized selector sent to class...

我在Apples文档中搜索,我看到该类包含在Foundation框架中(我的项目中包含该框架)。我不知道为什么会这样。

有什么想法吗?谢谢和问候。

3 个答案:

答案 0 :(得分:10)

你忘记了一些论点:

NSError *error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:json_string options:0 error:&error];

请注意,第一个参数是NSData对象,而不是字符串。

答案 1 :(得分:4)

完整选择器是JSONObjectWithData:options:error:,所以看起来你缺少两个参数。尝试类似的东西:

NSError *error = nil;
NSData *jsonData = [rawJSONString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData options: kNilOptions error:&error];

请注意,这会引用NSData参数而不是NSString参数,并且不会始终返回NSDictionary,它可能是NSArray或其他基础宾语。在生产使用中,您应该在信任error是有效对象之前检查jsonObject参数。

答案 2 :(得分:4)

根据documentation,您首先需要将字符串转换为NSData对象,并调用NSJSONSerialization的正确类方法。您可以执行以下操作:

NSData *stringData=[json_string dataUsingEncoding:NSUTF8StringEncoding];
NSError *jsonError=nil;
NSDictionary *dictionary =[NSJSONSerialization  JSONObjectWithData:stringData options:0 &jsonError];

检查jsonError以获取有关出错的提示,如果有的话。如果情况进展顺利,您将使用json_string信息填充您的字典。