Swift中的JSON反序列化

时间:2014-06-08 18:47:39

标签: json deserialization swift

在阅读了一些关于集合的内容之后,我开始怀疑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]

我的问题:是否有更好的方法可以解决这个问题?

2 个答案:

答案 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?>

这将帮助您按键访问元素。