1

在以下解析 JSON 的代码中,当对象碰巧不是 NSArray 或 NSDictionary 时,将使用 NSJSONReadingAllowFragments。

下面的代码工作正常并打印出 32。但如果将 32 替换为 abcd,则输出为 null。知道为什么字符串 abcd 为空。

NSString *num=@"32";
NSError *error;
NSData *createdData = [num dataUsingEncoding:NSUTF8StringEncoding];
id response=[NSJSONSerialization JSONObjectWithData:createdData options:NSJSONReadingAllowFragments error:&error];
NSLog(@"Response= %@",response);
4

1 回答 1

3

这是因为32它是一个有效的 JSON 片段(一个数字),但abcd不是一个有效的 JSON 片段,因为必须引用所有字符串。尝试:

NSString *num=@"\"abcd\"";

它产生"abcd"而不是abcd.

(另外,请记住,返回的对象并不是真正的 a NSDictionary,因此将其声明为id更有意义)

于 2013-06-06T11:39:02.657 回答