ios - 无法解码 JSON:无法读取数据,因为它的格式不正确
问题描述
更新
我收到错误“错误!无法解码 JSON:无法读取数据,因为它的格式不正确。”。请求中的 JSON 是
{"page":0,"pageSize":100,"totalPages":1,"numberOfElements":1,"totalElements":1,"hasPreviousPage":false,"hasNextPage":false,"content":[{"id":4554053904,"externalAccountId":null,"source":"PLAN","amount":1073741824,"reportId":null,"rowId":null,"timeCharged":1533427200000,"timeCreated":1533476043000}]}
为什么它不起作用?我不知道如何得到答案...
我的代码和结构:
struct TodoItem: Decodable {
let page: Int?
let pageSize: Int?
let totalPages: Int?
let numberOfElements: Int?
let totalElements: Int?
let hasPreviousPage: Bool
let hasNextPage: Bool
let content: [content]
}
struct content: Decodable {
let id: Int?
let externalAccountId: String?
let source: String?
let amount: Int?
let reportId: Int?
let rowId: Int?
let timeCharged: Int?
let timeCreated: Int?
}
func decodeJson() {
let jsonUrlString = "myurl.com"
print(jsonUrlString)
guard let url = URL(string: jsonUrlString) else { return }
URLSession.shared.dataTask(with: url) { (mydata, response, error2) in
guard let datos = mydata else { return }
do {
self.todoList = try JSONDecoder().decode([TodoItem].self, from: datos)
DispatchQueue.main.async {
self.tableView.reloadData()
}
} catch let jsonError {
print("Error! Could not decode JSON: \(jsonError.localizedDescription)")
}
}.resume()
解决方案
1 - 当您再次滚动到此单元格时,您应该在加载完成时缓存数据而不重新加载
2 - 您可以在加载单元格 0 -> 10 -> 的数据时显示加载全屏,并在完成所有这些时重新加载 tableview
3 - 相反在应用程序的更新中,您可以从服务器更新以在 1 个请求中加载许多项目
希望对您有用
推荐阅读
- jquery - 使用 JQuery onclick 切换反向视频
- flutter - 如何更改自定义可重用文本字段组件颤动中的focusedBorder颜色
- python - 如何从pytorch中给定位置的每一行获取值?
- sql - 我有一个查询,但它不起作用。我怎样才能正确地写它?
- asynchronous - Log4j2.xml - 队列大小和discardingThreshold
- flutter - 如何计算 querySnapshot 的总和?带有颤振/云火库
- angular - TestCafe 在登录过程中失去对弹出窗口的控制
- forms - 使用应用脚本将数据从一个谷歌表格发送到另一个谷歌表格
- python - 在 Python 中,我可以在一开始就启动一个后台工作程序,进行一些计算,然后在同一个函数结束时等待它的结果吗?
- xamarin - Xamarin 表单中的安全主密码?