在以下用于解析JSON的代码中,当对象碰巧不是NSArray或NSDictionary时,将使用NSJSONReadingAllowFragments。
下面的代码可以正常工作并输出32。但是如果将32替换为abcd,则输出为null。
不知道为什么它为字符串abcd的null。
NSString *num=@"32";
NSError *error;
NSData *createdData = [num dataUsingEncoding:NSUTF8StringEncoding];
id response=[NSJSONSerialization JSONObjectWithData:createdData options:NSJSONReadingAllowFragments error:&error];
NSLog(@"Response= %@",response);
最佳答案
这是因为32
是有效的JSON片段(一个数字),但是abcd
不是有效的JSON片段,因为必须用引号引起来。尝试:
NSString *num=@"\"abcd\"";
产生
"abcd"
而不是abcd
。(另外,请记住,返回的对象实际上不是
NSDictionary
,因此将其声明为id
更为合理)
关于ios - NSJSONSerialization NSJSONReadingAllowFragments阅读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16961025/