2

如果 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 是如何查看字符串的,而不是我得到的度数符号,我认为它是一个省略号 ∞ 符号。在浏览器中查看时,相同的字符串是度数符号。

这是一个错误吗?我肯定错过了什么。

谢谢,

约翰

4

0 回答 0