何时在 Decodable(Swift) 中使用 CodingKeys

2024-01-08

假设我想按如下方式解码 Person 结构。

struct Person: Decodable {

let firstName: String
let lastName: String
let age: Int: String
}

据我所知,数据只能用上面的方法解码。因此,如果我不将属性更改为自定义名称,如果上面和下面的实现没有区别?

此外,还有其他情况需要使用 CodingKeys 吗?除了重命名目的之外,当它们是必要的时,我很困惑。

struct Person: Decodable {

let firstName: String
let lastName: String
let age: Int: String
}

enum CodingKeys: String, CodingKey {
        
        case firstName
        case lastName
        case age
}


您可以以不同的方式使用 CodingKeys,例如,当您知道 JSON 中期望的值名称至少之一实际上与您的“let 或 var”名称不同时。

Example:

struct Person: Decodable {

let firstName: String
let lastName: String
let age: Int: String
}

enum CodingKeys: String, CodingKey {
        
        case firstName = "first_name"
        case lastName
        case age
}

另一种情况是当您使用类继承时。

总之,如果您绝对确定您使用的变量名称与编码密钥(JSON)相同,则可以省略它(但如果您想放置它,也没关系),但如果有区别,也许更改了您的编码键(例如大写或使用不同的单词),您应该使用枚举将正确的键与变量名称映射。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时在 Decodable(Swift) 中使用 CodingKeys 的相关文章

随机推荐