将字典转换为数据时出错数据

时间:2017-12-20 08:48:55

标签: swift

我正在使用:

[String: Any]转换为Data
let json: [String: Any] = [ "a": "abc",
                            "b": true,
                            "c": 1000 ]
let data = NSKeyedArchiver.archivedData(withRootObject: json)

打印data对象时:

  

bplist00Ô“#X $ $ versionX $ objectsY $ archiverT顶部©U $nullÓ
  WNS.keysZNS.objectsV $类£   £QbQaQcSabcèÒZ$ classnameX $ classes \ NSDictionary¢   !\NSDictionaryXNSObject_NSKeyedArchiverÑ$%#Troot -27AGNVahlnprvxz |〜¥²μÂËÝàå和C

使用NSKeyedArchiver错误的方法来实现这个目标吗?

由于

1 个答案:

答案 0 :(得分:2)

是的,NSKeyedArchiver不用于获取JSON数据。而是使用JSONSerialization.data

示例:

let json = try JSONSerialization.data(withJSONObject: object, options: JSONSerialization.WritingOptions.prettyPrinted)

更新:

在swift 4中,您可以使用JSONEncoder。例如

let obj: [String: Encodable] = [ "a": "abc",
                            "b": true,
                            "c": 1000 ]

let jsonEncoder = JSONEncoder()
do {
    let jsonData = try jsonEncoder.encode(obj)
}catch {

}