在阅读了一些关于集合的内容之后,我开始怀疑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]
我的问题:是否有更好的方法可以解决这个问题?
答案 0 :(得分:2)
HandyJSON可以帮助您轻松处理JSON。
您只需定义类,并直接将JSON反序列化。像:
da.SelectCommand.CommandTimeout = 180; // default is 30 seconds
玩得开心!
答案 1 :(得分:1)
我建议您再输入一下json对象:
let json = NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.MutableContainers, error: nil) as? Dictionary<String, AnyObject?>
这将帮助您按键访问元素。