我正在使用:
将[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
错误的方法来实现这个目标吗?
由于
答案 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 {
}