【发布时间】:2013-12-13 19:24:05
【问题描述】:
我有一个 NSJSONSerialization JSONObjectWithData,我在其中传递了一个 NSData 对象。结果,我得到了一个 NSString 而不是 NSDictionary。我的完整行是:
NSDictionary* jsonDec = [NSJSONSerialization JSONObjectWithData:jData options:NSJSONReadingAllowFragments error:&error];
而回报是:
为什么我没有返回一个 NSDictionary?我的后端是服务器上的PHP...
提前致谢!
【问题讨论】:
-
原始 JSON 长什么样?您的服务器肯定没有意外编码两次并返回一个字符串对象?
NSJSONSerialization通常应该返回一个字典或一个数组,如果你已经设置了NSJSONReadingAllowFragments,它也会很高兴地返回一个原始类型,如果这是它找到的全部。 -
即字典的字符串表示。你可以这样做: NSLog(@"%@",jsonDec);并且会在控制台日志中将 dict 视为字符串。
-
原因:'-[__NSCFString objectForKey:]:发送到实例的选择器无法识别。如果我尝试执行以下操作,这是我得到的错误:[[jsonDec objectForKey:@"result"] valueForKey:@"UserID"]
-
@CyberK:在我看来,您的服务器正在发送“嵌套 JSON”(无论出于何种原因)。比较 stackoverflow.com/questions/16948427/… 的类似问题,也许你可以使用它。
-
问题出在服务器上,它正在发送两次编码的 JSON;尝试在此处发布您正在使用的 PHP 代码。