arrays - 如何使用 Swift 解码不一致的 JSON 数据
问题描述
第一个问题:我正在使用这个JSON类型的API,但是有一些不一致的数据,在下面的例子中有一个度量数组,有时只包含“uri”和“label”,但有时它有一个嵌套“合格”的数组。我正在尝试使用结构在 Swift 9.2 版中对此进行解码。如何处理不一致的数组?
第二个问题:“措施”在某些地方被称为“措施”。如何处理不一致的标签?
"measures" : [ {
"uri" : "http://www.edamam.com/ontologies/edamam.owl#Measure_serving",
"label" : "Serving"
}, {
"uri" : "http://www.edamam.com/ontologies/edamam.owl#Measure_stalk",
"label" : "Stalk",
"qualified" : [ [ {
"uri" : "http://www.edamam.com/ontologies/edamam.owl#Qualifier_medium",
"label" : "medium"
}]]
}]
struct Hints: Codable {
let food: Food
let measures: [Measure]
}
struct Measure: Codable {
let uri: String
let label : String
let qualified : [[Qualified]]
}
struct Qualified: Codable {
let uri: String
let label : String
}
I really appreciate your help.
解决方案
如果您将该qualified
属性设为可选,您的解码将起作用
struct Measure: Codable {
let uri: String
let label : String
let qualified : [[Qualified]]?
}
由于 Qualified 包含作为 Measure 的前两个属性,而我们将最后一个属性设为可选,您甚至可以不使用 Qualified 并像这样定义 Measure
struct Measure: Codable {
let uri: String
let label : String
let qualified : [[Measure]]?
}
推荐阅读
- javascript - 使用 Vanilla JavaScript继承 href 目标到标记
- spring - 当我尝试使用 Hibernate ogm 和 spring boot 时,控制台给出“无法实例化命名策略类”错误
- php - 我的问题是我在一行中插入多个图像,在 codeginter 中用逗号分隔
- javascript - 在共享主机上运行 phantomjs 程序?
- spring-boot - 我可以从 Spring Boot 2 执行器集成中删除执行器字以进行健康检查吗
- sql-server - SQL Server 中的 Tempdb 磁盘已满
- mongodb - PrestoDB Mongo 查询花费太多时间
- android - 如果从主页或后台打开,应用程序未恢复并再次从主活动启动
- javascript - 我怎样才能一次打印所有内容
- amazon-web-services - 如何计算 DynamoDB 表中的目标利用率?