2016-11-08 4 views
0

Je veux convertir de la chaîne JSON en NSDictionary et les données sont UTF8. Ceci est mon code:Convertir la chaîne JSON UTF8 en NSDictionary Swift

override func viewDidLoad() { 
    super.viewDidLoad() 
    let string = "{\"name\":\"Việt NAM\",\"data\":{\"capital\":\"HÀ NỘI\",\"continents\":\"Châu Á\"}}" 
    let dataResult = convertStringToDictionary(text: string) 
    print (dataResult) 
} 



func convertStringToDictionary(text: String) -> [String:AnyObject]? { 
    if let data = text.data(using: String.Encoding.utf8) { 
     do { 
      return try JSONSerialization.jsonObject(with: data, options: []) as? [String:AnyObject] 
     } catch let error as NSError { 
      print(error) 
     } 
    } 
    return nil 
} 

et impression de données:

Optional(["name": Việt NAM, "data": { 
capital = "H\U00c0 N\U1ed8I"; 
continents = "Ch\U00e2u \U00c1";}]) 

données dans ANYOBJECT n'est pas UTF8.

+0

essayer [Chaîne: Tous] convertir les données –

+2

Il n'y a pas problème, c'est juste maintenant le dictionnaire est imprimé. Si vous accédez aux valeurs réelles du dictionnaire, tout sera comme prévu. –

Répondre

0

Ce problème se produit parce que vous essayez d'imprimer directement les données du dictionnaire plutôt que d'y accéder key/value d'abord essayer d'imprimer toutes les clés du dictionnaire pour obtenir et voir toutes les clés.

print(parseJSON.allKeys) 

il vous donne par exemple les touches suivantes: [name,data]

vous pouvez imprimer la valeur de ne importe quelle touche vous aimez:

print("Name: \(parseJSON.value(forKey: "name") as! String)")