将JSON字符串UTF8转换为NSDictionary Swift

时间:2016-11-08 05:20:14

标签: json swift utf-8 nsdictionary nsjsonserialization

我想从JSON字符串转换为NSDictionary,数据是UTF8。 这是我的代码:

    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。

1 个答案:

答案 0 :(得分:0)

出现此问题是因为您尝试直接打印字典数据而不是访问其key/value首先尝试打印所有字典键以获取并查看所有密钥。

print(parseJSON.allKeys)

它为您提供了以下这些键:[name,data]

然后您可以打印任何您喜欢的关键值:

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