使用[String:Any]而不是NSDictionary的Swift3 JSONSerialization

前端之家收集整理的这篇文章主要介绍了使用[String:Any]而不是NSDictionary的Swift3 JSONSerialization前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设您有一个json someText字符串,并且您想将其解析为字典.以前我做过这个……

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,将其强制转换为期望的类型.

猜你在找的Swift相关文章