如何解决如何将我的数据转换为 JSON 格式 - 健康应用
我对 swift 很陌生。
我需要创建以下 JSON 格式
{ "items" : [
“BloodPressure:” {
"endDate" : "2020-01-25",“systolicValue” : "122","diastolicValue" : "62"
"startDate" : "2020-01-25"
},“HeartRate:” {
"endDate" : "2020-01-25",“Value” : "78","startDate" : "2020-01-25"
},“BMI:” {
"endDate" : "2020-01-25",“Value” : "23","startDate" : "2020-01-25"
}
]
}
目前我正在使用 enum 将我的数据转换为 JSON 格式。问题是我的血压有不同的键(收缩压和舒张压)。我还需要显示诸如“项目”、“血压”、“HearRate”之类的键名。
我怎样才能实现我想要的 JSON 格式???
enum HealthDataType: String,Codable {
case bloodPressure
case heartRate
case bmi
}
struct HealtDataItem: Codable {
let endDate: Date
let value: Double
let startDate: Date
let type: HealthDataType
}
let bloodPressureItem = HealtDataItem(endDate: end,value: bloodPressureValue,startDate: start,type: .bloodPressure)
let bmiItem = HealtDataItem(endDate: end,value: bmiValue,type: .bmi)
let healthData = [bloodPressureItem,bmiItem]
do {
let data = try JSONEncoder().encode(healthData)
} catch {
//error handling
}
解决方法
如果您要创建 JSON 模型,我建议您使用 quicktype.io,它可以为您快速生成合适的 JSON 模型类。
我发现您在问题中提供的 JSON 模型格式错误,因此我已修复错误,但是您应该确保附加的 JSON 与您在应用中使用的相同:
固定的 JSON 模型
{ "items" : [
{ "BloodPressure": {
"endDate" : "2020-01-25","systolicValue" : "122","diastolicValue" : "62","startDate" : "2020-01-25"
}
},{"HeartRate": {
"endDate" : "2020-01-25","Value" : "78","startDate" : "2020-01-25"
}
},{ "BMI": {
"endDate" : "2020-01-25","Value" : "23","startDate" : "2020-01-25"
}
}
]
}
我能够在 quicktype.io 中使用上述 JSON,结果是您在下面看到的模型结构。如您所见,BloodType 数据类型考虑了 systolicValue 和 diastolicValue。为了便于阅读,我从默认的 quicktype.io 命名中重命名了一些模型结构,以提高项目的可读性。
JSON 模型结构
struct HealthData: Codable {
let metrics: [Metric]
}
// MARK: - Item
struct Metric: Codable {
let bloodPressure: BloodPressure?
let heartRate,bmi: Bmi?
enum CodingKeys: String,CodingKey {
case bloodPressure = "BloodPressure"
case heartRate = "HeartRate"
case bmi = "BMI"
}
}
// MARK: - BloodPressure
struct BloodPressure: Codable {
let endDate,systolicValue,diastolicValue,startDate: String
}
// MARK: - Bmi
struct Bmi: Codable {
let endDate,value,startDate: String
enum CodingKeys: String,CodingKey {
case endDate
case value = "Value"
case startDate
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。