假设您有一个json someText字符串,并且您想将其解析为字典.以前我做过这个…… let jsonResult: NSDictionary = try JSONSerialization.jsonObject( with: someText.data(using: .utf8)!, options: JSONSerialization.ReadingOp
let jsonResult: NSDictionary = try JSONSerialization.jsonObject( with: someText.data(using: .utf8)!, options: JSONSerialization.ReadingOptions.mutableContainers) as! NSDictionary
但那只是一个糟糕的NSDictionary.
看来你确实可以这样做……
let jsonResult: [String:Any] = try JSONSerialization.jsonObject( with: someText.data(using: .utf8)!, options: JSONSerialization.ReadingOptions.mutableContainers) as! [String:Any]
所以这是一个真正的Swift词典.
这有用吗?是否存在严重的效率差异,或者其他问题?
对我来说很困惑
open class func jsonObject(with data: Data, options opt: JSONSerialization.ReadingOptions = []) throws -> Any
无论如何,电话只会返回Any.所以当你把它投射到[String:Any]或者NSDictionary时,过程是什么,最好的是什么?
Are there drastic efficiency differences
是的,有.
NSDictionary完全缺乏类型信息,本机Swift集合类型更有效,强烈推荐.你可以使用var免费获得可变性.无论如何,mutableContainers在Swift中都是无用的.
jsonObject(数据返回Any,因为返回类型可以是Dictionary,Array甚至是String / Number,最小公分母是Any,将其强制转换为期望的类型.