快速解析 Json 数据
Posted
技术标签:
【中文标题】快速解析 Json 数据【英文标题】:Json data parse in swift 【发布时间】:2017-08-07 11:28:51 【问题描述】:我是 swift 代码的新手
这是我解析后的json,我必须在tableview上显示, 我可以正确获取日期、详细信息、eventid,但无法获取横幅图片中的“eventImage”,我可以尝试但没有得到,请帮助我 这是我的代码 json调用函数
if errorCode == "0"
if let Media_list = jsonData["events"] as? NSArray
for i in 0 ..< Media_list.count
if let MediaEventData = Media_list[i] as? NSDictionary
=====>> Hear the problem let imageURL = self.url+"/images/" + String(describing: MediaEventData["bannerImage"]!)
self.Mediainfo.append(MediaEvent(
eventId: MediaEventData["eventId"]as?String,
date: MediaEventData["date"]as?String,
eventname: MediaEventData["eventName"]as?String,
bannerImages: imageURL
)
)
self.do_table_refresh()
我的 tablview 代码
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "Media", for: indexPath)as! MediaCustomTableViewCell
let row = indexPath.row
let media = Mediainfo[row] as MediaEvent
cell.DisplayDate.text = media.date
cell.DisplayName.text = media.eventName
cell.DisplayImage.image = UIImage(named: "profile_pic")
cell.DisplayImage.downloadImageFrom(link: media.bannerImages!, contentMode: .scaleAspectFit)
// Configure the cell...
return cell
怎样才能显示“banner image”tableview
【问题讨论】:
作为 Swift 新手,请先了解变量名以小写字母开头的命名约定,并使用 Swift 原生类型Array
和 Dictionary
而不是无类型 NS...
基础类型。
我有多个图像的日期,我想显示 ex:2017 年 8 月 8 日有两个图像,但我想在 tableview 中显示当天的第一张图像我该怎么做
如果可以尝试下面的代码,它会显示当天的孔图像,请帮助我
【参考方案1】:
我认为问题在于您访问横幅图片的方式我认为应该是这样的
MediaEventData["eventImages"][i]["bannerImage"]
其中 i 是 eventImages 数组的索引
在您的代码中,您可以这样做:
var imageUrl: String = ""
if let Media_list = jsonData["events"] as? [Any]
for i in 0 ..< Media_list.count
if let MediaEventData = Media_list[i] as? [String: Any]
let eventImages = MediaEventData["eventImages"] as! [[String: Any]]
if eventImages.count > 0
let bannerImage = eventImages[0]["bannerImage"] as? String
imageUrl = self.url+"/images/" + String(describing: bannerImage!)
self.Mediainfo.append(MediaEvent(
eventId: MediaEventData["eventId"]as?String,
date: MediaEventData["date"]as?String,
eventname: MediaEventData["eventName"]as?String,
bannerImages: imageURL
)
)
【讨论】:
这段代码会导致很多'Any' has no subscript members错误。 我有多个图像的日期,我想显示 ex:2017 年 8 月 8 日有两个图像,但我想在 tableview 中显示当天的第一张图像我该怎么做 @naga 我更新了我的答案以显示第一张图片请检查,如果您有任何问题,请询问 @user1000 在收到此错误消息类型“任何”没有下标成员后,我尝试了上面的代码 我认为你需要向下转换为 Array ,我更新了我的答案,请检查【参考方案2】:对我来说很好
if errorCode == "0"
if let Media_list = jsonData["events"] as? NSArray
self.Mediainfo.removeAll()
for i in 0 ..< Media_list.count
if let MediaEventData = Media_list[i] as? NSDictionary
if let image_list = MediaEventData["eventImages"] as? NSArray
for i in 0 ..< image_list.count
if let mydata = image_list[i] as? NSDictionary
let datavalue = mydata["bannerImage"]as? String
self.imageurl = self.url+"/images/events/" + datavalue!
self.Mediainfo.append(MediaEvent(
eventId: MediaEventData["eventId"]as?String,
date: MediaEventData["date"]as?String,
eventname: MediaEventData["eventName"]as?String,
bannerImages: self.imageurl
))
【讨论】:
以上是关于快速解析 Json 数据的主要内容,如果未能解决你的问题,请参考以下文章