2016-11-08 199 views
0

我想从JSON字符串转换为NSDictionary和数据是UTF8。 这是我的代码:转换JSON字符串UTF8为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 
} 

和数据打印:

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

数据在AnyObject不是UTF8。

+0

试试[字符串:任何]转换数据 –

+2

没有问题,那就是现在字典被打印。如果你访问实际的字典值,那么一切都会如预期的那样。 –

回答

0

发生此问题的原因是您尝试直接打印字典的数据,而不是直接访问它的key/value首先尝试打印所有字典键以获取并查看所有键。

print(parseJSON.allKeys) 

它可以让你如这些键:[name,data]

那么你可以打印任何键值你喜欢:

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