application/json 响应中的 NSJSONSerialization、NSURLSession、Unicode

NSJSONSerialization, NSURLSession, Unicode in application/json responses

我正在使用 NSURLSession 与 Web 服务器通信,并使用 NSJSONSerialization 来解码 JSON。我在解释表情符号字符时遇到问题。

例如,我有一个 JSON 文件位于:https://www.virtualsanity.com/unicode.json

文件内容为:

{"\uf4a9": "\uf4a9"}

字典中的键值是"\uf4a9"。我相信这是一个正确转义的角色。

我在 iOS 9:

上有这个 Swift 代码 运行
let urlSession = NSURLSession.sharedSession()
let url = NSURL(string: "https://www.virtualsanity.com/unicode.json")!
let request = NSMutableURLRequest(URL: url)
let dataTask = urlSession.dataTaskWithRequest(request) { (data, urlResponse, error) in
    print("encoding: ", urlResponse?.textEncodingName)
    if let responseData = data {
        if let json = try? NSJSONSerialization.JSONObjectWithData(responseData, options: NSJSONReadingOptions()) {
            if let dictionary = json as? [String: String] {
                for (key, value) in dictionary {
                    print("key: \(key), value: \(value)")
                }
            }
        } else {
            print("Unable to deserialize json")
        }

    } else {
        print("No response data")
    }
}
dataTask.resume()

我希望生成的字典的键和值都是一个字符。相反,它们是垃圾字符。

我希望有人能帮助我理解我做错了什么。

实际上 unicode 是 \u1F4A9,在操场上试试这个:

print("\u{1f4a9}")
print("\u{f4a9}")