JSONObjectWithData は、json 文字列に度記号 ° (U+00B0) が含まれている場合、エラーなしで 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が文字列をどのように認識しているかを確認し、度記号の代わりに、省略記号∞記号であると考えています。ブラウザーで表示すると、同じ文字列が度記号です。
これはバグですか?私は何かが欠けているに違いない。
ありがとう、
ジョン