如何设计可编码的 JSON 字段,该字段可以是空字符串或整数



如何处理来自JSON的可编码结构的字段,该字段可以是空字符串或整数? 我尝试使用数据类型 any,但这不符合可编码。 我认为如果它没有值,那么它会返回一个空字符串,否则,它会返回一个 int。 我正在使用 Swift 4 和 XCode 9。 提前致谢

我真的建议更改该 Web 服务以一致地返回值(如果整数类型没有值,则不要为该键返回任何内容)。

但是,如果您坚持这种设计,则必须编写自己的init(from:),以优雅地处理解析整数值的失败。 例如:

struct Person: Codable {
let name: String
let age: Int?
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
name = try values.decode(String.self, forKey: .name)
do {
age = try values.decode(Int.self, forKey: .age)
} catch {
age = nil
}
}
}

我还建议不要使用0作为"未提供整数值"的哨兵值。这就是可选选项的用途。

相关内容

  • 没有找到相关文章

最新更新