2016-07-10 11 views
0

Ich verwende NSURLSession für die Kommunikation mit Webservern und NSJSONSerialization für die Dekodierung von JSON. Ich habe Probleme beim Interpretieren von Emoji-Zeichen.NSJSONSerialization, NSURLSession, Unicode in Anwendung/JSON-Antworten

Zum Beispiel, ich habe eine JSON-Datei an: https://www.virtualsanity.com/unicode.json

Der Inhalt der Datei ist:

{"\uf4a9": "\uf4a9"} 

Der Schlüssel und Wert im Wörterbuch ist "\ uf4a9". Ich glaube, das ist ein richtig entflohener Charakter.

Ich habe diese Swift-Code auf iOS läuft 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() 

Ich erwarte, dass sowohl der Schlüssel und der Wert des resultierenden Wörterbuch ein Zeichen sein. Stattdessen sind sie Müllzeichen.

Ich hoffe, dass jemand mir helfen kann zu verstehen, was ich falsch mache.

Antwort

0

Tatsächlich ist die Unicode für ist \u1F4A9, versuchen Sie dies auf einem Spielplatz:

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

ich nicht \ u1F4A9 Arbeit machen konnte, aber ich konnte \ ud83d \ udca9 Arbeit machen. Sind Webservices, die als \ uf4a9 codieren, einfach falsch, oder sollte ich etwas tun, um meine Decodierung toleranter zu machen? Vielen Dank. –

+0

Ich habe das schon mal gesehen und jedes Mal war es der Webservice was falsch ist – juanjo