我使用NSJSONSerialization来解析Swift应用程序中的JSON。但是,返回的字典包含一个复杂的,深层嵌套的结构,因此使用非常长的类型声明(例如Dictionary<String, Array<Dictionary<String, ....>>
)是不切实际的。
在Swift中使用这样的结构是否有一种好方法,其中集合的结构非常复杂,其类型在运行时才知道?
答案 0 :(得分:12)
只需将您的json数据引用作为NSDictionary:
var dict: NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary
然后你可以使用下标来引用它:
var myValue: NSString = dict["level1"]["level2"]
答案 1 :(得分:5)
myDictionary["accounts"]
可能是可选的。尝试:myDictionary["accounts"]?["active"]?
答案 2 :(得分:4)
在Obj-C中我们可以写,
cityName = myDictionary[@"photos"][@"region"][@"city"]
正如以上几位发现的那样,以上内容并不适用于Swift,至少它从来没有适用于我。
以下是如何在Swift中执行此操作以访问NSDictionary中的三个索引的字符串,
let cityName = ((myDictionary!["photos"] as NSDictionary)["region"]! as NSDictionary)["city"]! as String`
我希望在Swift的下一次更新中,所有这些都可以减少到我们在Obj-C中所拥有的。