如何将包含\ u转义字符的JSON解码为UTF8 NSString?

时间:2013-06-09 13:37:13

标签: ios objective-c json parsing decode

我正在获取JSON对象并将它们保存在NSString中,如下所示:

// fetch JSON from a Wiki article
NSError *error = nil;
NSString *responseString = [NSString stringWithContentsOfURL:myURL encoding:NSUTF8StringEncoding error:&error];

这一般是有效的,但我的responseString中有\u####个转义字符,我想要的是相应的UTF8字符,例如: \u2640应为

responseString解码所有转义字符的最简单方法是什么?


更新 我在某处读到了我应该尝试使用NSNonLossyASCIIStringEncoding而不是NSUTF8StringEncoding来获取JSON,但这会导致错误,因此我根本没有得到responseString

然后错误是:

Error Domain=NSCocoaErrorDomain Code=261 "The operation couldn’t be completed. (Cocoa error 261.)"

1 个答案:

答案 0 :(得分:6)

不要提取字符串。获取数据并使用NSJSONSerialization进行转换:

NSData *data = [NSData dataWithContentsOfURL:url];
NSError *error;
id jsonObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];

NSJSONSerialization自动处理所有引用和转义内容。

jsonObject将是NSArrayNSDictionary,具体取决于输入数据。

备注dataWithContentsOfURL阻止当前线程,直到请求完全为止 完成(或超时)。如果这是一个问题,请考虑使用其中一个异步 NSURLConnection获取数据的方法。)