ユニコードエスケープされたJSON文字列をデコードする方法が見つからないので調べてみました。
(パースする方法はいくらでもあるのですが。。。)
こんな感じでUtilityクラスにでも定義して呼び出すと便利な予感です。
Utils.h
+ (NSString *)decodeJSONString:(NSString *)input;
Utils.m
+ (NSString *)decodeJSONString:(NSString *)input
{
NSString *esc1 = [input stringByReplacingOccurrencesOfString:@"\\u" withString:@"\\U"];
NSString *esc2 = [esc1 stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];
NSString *quoted = [[@"\"" stringByAppendingString:esc2] stringByAppendingString:@"\""];
NSData *data = [quoted dataUsingEncoding:NSUTF8StringEncoding];
NSString *unesc = [NSPropertyListSerialization propertyListFromData:data
mutabilityOption:NSPropertyListImmutable format:NULL
errorDescription:NULL];
assert([unesc isKindOfClass:[NSString class]]);
return unesc;
}
使い方
NSString *escapedString = [Utils decodeJSONString:error];
下記投稿のコピペですが(白目)
http://stackoverflow.com/questions/2099349/using-objective-c-cocoa-to-unescape-unicode-characters-ie-u1234
日本語でこそ必要そうな情報なので投稿してみます。