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

标签 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.)"

最佳答案

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

NSData *data = [NSData dataWithContentsOfURL:url];
NSError *error;
id jsonObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
NSJSONSerialization自动处理所有引用和转义内容。
jsonObject将为NSArrayNSDictionary,具体取决于输入数据。

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

关于ios - 如何将包含\u转义字符的JSON解码为UTF8 NSString?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17010188/

相关文章:

blackberry - 读取google map 返回的JSON数据

ios - 所有被 addObject 覆盖的对象 : when using NSXMLParser

ios - 使用 CMPedometer (CoreMotion) 进行实时更新

ios - 无法使用 Storyboard 设置将出现在 App Startup 上的第一个 View Controller

objective-c - 确定 View 是否在 Popover View 内

java - Spring中如何将数据从一个路径传递到另一个路径

ios - 在 api 调用之前从核心数据表中删除数据在 swift 中不起作用

objective-c - 在接口(interface)文件中导入类和前向声明(@class)有什么区别?

ios - json解析崩溃

java - 在 Java 中将 JSON 转换为 XLS/CSV