提问人:helloworld12345 提问时间:5/16/2021 更新时间:5/16/2021 访问量:208
如何设置可解码的 JSON 结构,以便跳过 nil 值?
How do I set up a decodable JSON Struct so that nil values are just skipped?
问:
我正在使用以下代码来保存 JSON 数据。但是,有时,数据显示为零。是否可以忽略这一点或在返回 nil 的情况下设置标准值?
struct Information: Decodable {
public let value: Double?
private enum CodingKeys: String, CodingKey {
case value = "value"
}
}
答:
1赞
grigorevp
5/16/2021
#1
声明自定义解码逻辑可能会以一种糟糕的方式工作:
struct Information: Decodable {
public let value: Double
private enum CodingKeys: String, CodingKey {
case value = "value"
}
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
let preValue = try values.decode(Double?.self, forKey: .value)
value = preValue ?? 0.0
}
}
对于一个好的,请考虑 vadian 的笔记
评论
0赞
vadian
5/16/2021
。可能有效,但这是不好的做法。有。切勿解码可选类型。preValue = try values.decodeIfPresent(Double.self, forKey: .value) ?? 0.0
0赞
grigorevp
5/16/2021
@vadian 当然,成功了
评论
nil