5

奇妙な UTF-8 文字列を含む JSON を受け取りました。例えば:

{
  "title": "It\U2019s The End";
}

読みやすい方法で表示できるように、このデータを処理する最善の方法は何ですか? その \U2019 を、それが表す引用符に変換したいと思います。

編集:文字列を NSString* に解析したと仮定しますjsonResult

編集 2: AFNetworkingを介して JSON を受信して​​います:

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
    NSString* jsonResult = [JSON valueForKeyPath:@"title"];
} failure:nil];
4

1 に答える 1

4

アップデート:

カートは、ボンネットの下でAFJSONRequestOperation使用することに注目しています。NSJSONSerializationそのため、JSON が無効である可能性があります (以下で説明するように、 が存在してはならず、 が小文字で;ある必要があります。これは、以下の元の回答で言及されています。Uu


これは、JSON がデータを格納できる方法の一部です。JSON パーサーを介して JSON 文字列を渡す必要があります。そうすれば、文字列を正しく抽出できます。

注: 上記の JSON は無効です。末尾にセミコロンがあってはならず、U は小文字の u でなければなりません。以下の例では、JSON 文字列が変更されています

NSString* str = @"{\"title\": \"It\\u2019s The End\"}";

NSError *error = nil;
NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *rootDictionary = [NSJSONSerialization JSONObjectWithData:data
                                                               options:0
                                                                 error:&error];
if (error) {
    // Handle an error in the parsing
}
else {
    NSString *title = [rootDictionary objectForKey:@"title"];
    NSLog(@"%@", title); //Prints "It’s The End"
}
于 2013-02-03T20:49:11.587 に答える