【发布时间】:2014-06-08 18:47:39
【问题描述】:
在阅读了一些关于集合的内容后,我开始怀疑 json 反序列化是否会成为一个问题,因为集合需要为其包含的值指定类型。对于字典,需要同时指定键和值的类型。
经过一番实验,我发现以下工作:
let jsonString = "{\"bool\": true, \"num\": 1,\"string\": \"a string\"}"
let jsonData = jsonString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
let json : AnyObject! = NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.MutableContainers, error: nil)
let valid = NSJSONSerialization.isValidJSONObject(json)
当我使用游乐场(或在 REPL 中)时,打印出 json 对象的内容时会得到以下信息:
["num": 1, "string": "a string", "bool": 1]
我的问题:有没有更好的方法来处理这个问题?
【问题讨论】:
-
差不多就是这样,尽管我倾向于使用可选项而不是隐式展开(?而不是!)而且由于它是 AnyObject 的很多数组和字典,所以有很多转换正在进行.
标签: json deserialization swift