ios - 在 Swift 中解析 JSON 24 小时的问题
问题描述
我现在完成这个项目的精力和时间都很有限,我已经尽我所能来学习、理解和实施一个没有成功的解决方案,我真的很想得到一些帮助。有人对实施解决方案有任何想法吗?
我真的很难在 Swift 中将 json 文件解析到我的 iOS 应用程序中。我有一个来自 SQL 数据库的 JSON 输出。我认为格式错误并且数据标题有点模棱两可,但我聘请来创建流程的开发人员对输出感到满意。下方链接。
所以在过去的 3 天里,我阅读了所有关于解析 JSON 的 Apple Developer 材料,还观看了许多教程,它们都涵盖了几乎相同的数据,我不知道我已经阅读了多少并将其转换为具有都失败了。我真的需要一些指导。我什至拼命尝试从不同的角度理解我的问题,我已经研究了它是如何用其他语言完成的。这是最新的迭代:
导入 UIKit 导入基础
struct ScheduleList: Codable {
let data: [Datum]
enum CodingKeys: String, CodingKey {
case data = "data"
}
}
struct Datum: Codable {
let date: String
let message: String
let notice: String
enum CodingKeys: String, CodingKey {
case date = "date"
case message = "message"
case notice = "notice"
}
}
class VCMainViewController: UIViewController {
@IBOutlet weak var flightTable: UITableView!
@IBOutlet weak var date: UILabel!
@IBOutlet weak var route: UILabel!
@IBOutlet weak var std: UILabel!
@IBOutlet weak var sta: UILabel!
@IBOutlet weak var pax: UILabel!
let flight = [Datum]()
func parse() {
let jsonUrlString = "http://35.237.114.234/api/index.php?uid=Bx7faf08A9fYJ7bZCNMUX9EzxYN2"
guard let url = URL(string: jsonUrlString) else { return }
let task = URLSession.shared.scheduleListTask(with: url) { (scheduleList, response, error) in
guard let scheduleList = scheduleList, error == nil, response != nil else {
print("Something Wrong")
return
}
print("downlaoded")
do {
let decoder = JSONDecoder()
//Error Here: Cannot convert value of type 'ScheduleList' to expected argument type 'Data'
let downloadedFlights = try decoder.decode([scheduleList], from: scheduleList)
self.flight = downloadedFlights.date
} catch {
print("Something wrong after loading")
}
}
//I find I can print data / scheduleList here and it still returns correct data. So something above I guess is the problem.
task.resume()
/*
if scheduleList != nil {
print(scheduleList!)
} else {
print(error)
}
}
*/
}
override func viewDidLoad() {
super.viewDidLoad()
parse()
}
}
**由于原始帖子的问题,现在添加了完整的 JSON 文件。
我认为结构是问题。有什么建议我哪里出错了吗?我不能将其转换为 Data,dataTask 数据称为 scheduleList,所以我不知道为什么它不接受它。
谢谢
解决方案
只需将最后两个字符从 更改],
为]}
,您将获得有效的 JSON。
它甚至可能工作:)
如果没有,请发回确切的错误消息,以及失败所在的行。
再一次,有一个方便的 JSON 格式化程序/浏览器/验证器是很好的。我通常使用 Notepad++ 插件。这是一个很好的在线浏览器:
也可以看看:
推荐阅读
- python-3.x - Firefox selenium webscraper错误:AttributeError:'method_descriptor'对象没有属性'today'
- python - Selenium webdriver Chrome 没有检测到所有的复选框和下拉菜单
- vue.js - 如何为 Gridsome 使用自定义 Transformer?
- python - Heroku 部署 plotly-dash 应用程序 - 构建失败
- rest - Apache Camel REST DSL deadLetterChannel
- bash - sed:在文件最后一行的位置搜索和替换值
- python - 如何抓取具有用户名和密码的网站?
- python - 通过谷歌 API 和 Python 将照片上传到谷歌照片
- azure - 简化 PowerShell Runbook 以发送电子邮件
- java - 使用 JPA 和 ManyToMany 删除