json - 如何快速访问来自json的深层嵌套数据?
问题描述
我在访问“WaznyDo”时遇到问题:“2021-09-18”Xcode 在尝试遍历数据模型时返回错误
{
"lastUpdate": "2021-08-31 06:40:35",
"karty": {
"0000985766": {
"bilety": [
{
"Taryfa": [
"Miesiczny",
" wacny we wszystkie dni tygodnia",
" ulgowy",
" imienny"
],
"Strefa": "Miasto Gdask",
"WaznyDo": "2021-09-18"
}
]
}
}
}
我尝试了互联网上的每个解码器,但没有帮助
解决方案
而不是破坏性的评论——这里有一个解决方案:
您需要一些结构来对 JSON 数据的结构进行建模:
struct AllData: Codable {
let lastUpdate: String
let karty: Karty
}
struct Karty: Codable {
let a0000985766: A0000985766
enum CodingKeys: String, CodingKey {
case a0000985766 = "0000985766"
}
}
struct A0000985766: Codable {
let bilety: [Bilety]
}
struct Bilety: Codable {
let taryfa: [String]
let strefa, waznyDo: String
enum CodingKeys: String, CodingKey {
case taryfa = "Taryfa"
case strefa = "Strefa"
case waznyDo = "WaznyDo"
}
}
如果您将 JSON 数据存储在名为“data.json”的文件中并将其放在应用程序内的某个文件夹中,则可以通过 url 检索它:
let url = Bundle.main.url(forResource: "data", withExtension: "json")
现在这里有一个简单的视图控制器打印出你想要的数据:
import UIKit
class ViewController: UIViewController {
var allData: AllData!
// URL of JSON file
let url = Bundle.main.url(forResource: "data", withExtension: "json")
override func viewDidLoad() {
super.viewDidLoad()
do {
allData = try JSONDecoder().decode(AllData.self, from: Data(contentsOf: url!))
} catch {
print("json error when trying to serialize")
}
// Output results, for example:
print(allData!.lastUpdate) // 2021-08-31 06:40:35
print(allData!.karty.a0000985766.bilety[0].waznyDo) // 2021-09-18
}
}
推荐阅读
- r - Grepl() 对唯一值进行排序?
- python - “错误:命令出错,退出状态 1:”尝试使用 pip 安装 p5
- android - 如何从非反应类发送反应应用程序上下文?
- pandas - pd.concat 计划形状未对齐错误
- python - 生成和读取带有特殊字符的二维码
- google-cloud-platform - 在 Dataproc 现有集群上安装 PIP 包
- coding-style - 不良命名编码风格的技术术语
- c++ - 来自 Stroustrup 的随机数示例存在编译错误
- java - Spring Boot,...Service 中构造函数的参数 1 需要找不到类型为“...Mapper”的 bean
- python - 使用坐标对标签和打印 ID 进行排序