如果 json 字符串包含度数符号 ° (U+00B0),则 JSONObjectWithData 将返回 null 而不会出错。如果我将 json 字符串提供给我的桌面浏览器,它会显示得很好。
我的代码(一个类别)带有一些 NSLogs 来查看正在发生的事情看起来像这样......
+(NSDictionary*)dictionaryWithContentsOfJSONURLString:(NSString *)urlAddress{
__autoreleasing NSError* error = nil;
NSData* data = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlAddress] options:NSDataReadingUncached error:&error];
if (error != nil) {
NSLog(@"%@",[error localizedDescription]);
} else {
NSLog(@"No Error: %@", data); //looks good here. console displays the raw data
}
id result = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
if (error != nil) {
NSLog(@"%@",[error localizedDescription]);
return nil;
} else {
NSLog(@"No Error: %@", [result objectForKey:@"exams"]); //console displays the value ("No Error: value for key...") unless a degree symbol is present in which case it displays No Error: (null)
}
return result;
}
因此,如果接收到的 json 字符串包含度数符号,我没有收到任何错误,但 JSONOBjectWithData 将返回 null。
我使用带有 URL 内容的 NSString 来查看 xCode 是如何查看字符串的,而不是我得到的度数符号,我认为它是一个省略号 ∞ 符号。在浏览器中查看时,相同的字符串是度数符号。
这是一个错误吗?我肯定错过了什么。
谢谢,
约翰