加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用Swift 3进行JSON序列化

发布时间:2020-12-14 04:46:29 所属栏目:百科 来源:网络整理
导读:我试图通过从 JSON数据填充数组来填充表.我正在使用下面的代码,但一直收到错误: Type ‘Any’ has no subscript members 在以下代码行中: self.tableData.append(jsonResult[i]["title"]! as! String)self.tableImages.append(jsonResult[i]["image"]! as!
我试图通过从 JSON数据填充数组来填充表.我正在使用下面的代码,但一直收到错误:

Type ‘Any’ has no subscript members

在以下代码行中:

self.tableData.append(jsonResult[i]["title"]! as! String)
self.tableImages.append(jsonResult[i]["image"]! as! String)
self.tableDesc.append(jsonResult[i]["description"]! as! String)
self.tableValidity.append(jsonResult[i]["validity"]! as! String)

我的代码:

let str3 = Int(str2!)!
            let url = NSURL(string: "https://www.*****.php")!

            let task = URLSession.shared.dataTask(with: url as URL) { (data,response,error) -> Void in
                if let urlContent = data {
                    do {

                        let jsonResult = try JSONSerialization.jsonObject(with: urlContent,options: JSONSerialization.ReadingOptions.mutableContainers)


                        print(str3)

                        var i = 0

                        while i < str3 {
                            print(jsonResult[i]["title"]! as!String)
                            print(jsonResult[i]["image"]! as! String)

                            self.tableData.append(jsonResult[i]["title"]! as! String)
                            self.tableImages.append(jsonResult[i]["image"]! as! String)
                            self.tableDesc.append(jsonResult[i]["description"]! as! String)
                            self.tableValidity.append(jsonResult[i]["validity"]! as! String)

                            i = i + 1

                        }

                    } catch {
                        print("JSON serialization failed")
                    }                    

                } else {                    
                    print("ERROR FOUND HERE")
                }                

                DispatchQueue.main.async(execute: { () -> Void in

                    self.tableView.reloadData()

                })                                

            }

            task.resume()

解决方法

编译器不知道jsonResult的类型,你必须告诉它是什么,例如使用这样的可选绑定:

if let jsonResult = try JSONSerialization.jsonObject(with: urlContent,options: []) as? [[String:AnyObject]] {


}

在这里,我将JSON转换为一组字典.如果let和它应该工作,请使用你的循环.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读