2016-07-10 2 views
0

Я использую NSURLSession для связи с веб-серверами и NSJSONSerialization для декодирования JSON. У меня проблемы с интерпретацией персонажей эможи.NSJSONSerialization, NSURLSession, Unicode в приложениях/ответы json

К примеру, у меня есть файл в формате JSON по адресу: https://www.virtualsanity.com/unicode.json

Содержание этого файла:

{"\uf4a9": "\uf4a9"} 

Ключ и значение в словаре "\ uf4a9". Я считаю, что это человек с эвакуацией.

У меня есть этот Swift код работает на прошивке 9:

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() 

Я ожидаю, как ключ и значения результирующего словаря, быть символом. Вместо этого они являются персонажами мусора.

Я надеюсь, что кто-то может помочь мне понять, что я делаю неправильно.

ответ

0

На самом деле юникод для является \u1F4A9, попробуйте это в игровой площадке:

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

Я не мог сделать \ u1F4A9 работы, но я мог бы сделать \ ud83d \ udca9 работы. Являются ли кодирование веб-сервисов как \ uf4a9 просто неправильным, или есть что-то, что я должен сделать, чтобы сделать мой декодер более терпимым? Благодарю. –

+0

Я видел это раньше и каждый раз, когда это было веб-службой, что не так – juanjo