我试图将json字符串解析为字典。为此我使用以下代码:
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:json_string];
这给了我以下错误:
+[NSJSONSerialization JSONObjectWithData:]: unrecognized selector sent to class...
我在Apples文档中搜索,我看到该类包含在Foundation框架中(我的项目中包含该框架)。我不知道为什么会这样。
有什么想法吗?谢谢和问候。
答案 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信息填充您的字典。