2

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が文字列をどのように認識しているかを確認し、度記号の代わりに、省略記号∞記号であると考えています。ブラウザーで表示すると、同じ文字列が度記号です。

これはバグですか?私は何かが欠けているに違いない。

ありがとう、

ジョン

4

0 に答える 0