使用Swift 3解析JSON

使用Swift 3解析JSON,第1张

概述我有这个我希望在 Swift 3中使用的json数据.我正在学习Swift并构建一个非常基本的应用程序,它显示来自JSON的tableUIView中的项目列表. { "expertPainPanels" : [ { "name": "User A", "organization": "Company A" }, { "na 我有这个我希望在 Swift 3中使用的Json数据.我正在学习Swift并构建一个非常基本的应用程序,它显示来自JsON的tableUIVIEw中的项目列表.
{  "expertPainPanels" : [     {       "name": "User A","organization": "Company A"     },{       "name": "User B","organization": "Company B"     }    ]}

我正在尝试使用Swift 3获取此数据.

if (statusCode == 200) {    do{        let Json = try? JsONSerialization.JsonObject(with: data!,options:.allowFragments) // [[String:AnyObject]]/*    If I do this:     let Json = try? JsONSerialization.JsonObject(with: data!,options:.allowFragments) as! [String:Any]    if let experts = Json?["expertPainPanels"] as! [String: Any] {    I get "Initializer for conditional binding must have Optional type,not '[String: Any]'"*/        // Type 'Any' has no subscript members.        if let experts = Json["expertPainPanels"] as? [String: AnyObject] {            for expert in experts {                let name = expert["name"] as? String                let organization = expert["organization"] as? String                let expertPainPanel = ExpertPainPanel(name: name,organization: organization)!                self.expertPainPanels += [expertPainPanel]                self.tableVIEw.reloadData()                self.removeLoadingScreen()            }        }     }catch {          print("Error with Json: \(error)")        }     }

它在Swift 2中运行良好.我更新了Swift 3,它破坏了代码.我读过几篇SO,但我仍然很难理解它.我应用了一些建议,包括JSON Parsing in Swift 3,但我仍然无法修复我得到的错误.

从Swift 3开始,你需要尽早进行演员表演.

这一行:

let Json = try? JsONSerialization.JsonObject(with: data!,options:.allowFragments)

应该成为这样的:

let Json = try JsONSerialization.JsonObject(with: data!,options:.allowFragments) as? [String : AnyObject]

这是因为JsONSerialization现在返回Any,它没有为[]运算符实现变体.确保您安全地展开演员,并采取常见措施,以确保您不会崩溃你的程序.

编辑:您的代码应该或多或少看起来像这样.

let data = Data()let Json = try JsONSerialization.JsonObject(with: data,options:.allowFragments) as! [String : AnyObject]if let experts = Json["expertPainPanels"] as? [String: AnyObject] {
总结

以上是内存溢出为你收集整理的使用Swift 3解析JSON全部内容,希望文章能够帮你解决使用Swift 3解析JSON所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1038185.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存