我正在使用Codable
带有JSON数据的Swift 4 协议。我的数据经过格式化,以使得在根级别只有一个键,并且包含包含我所需属性的对象值,例如:
{
"user": {
"id": 1,
"username": "jdoe"
}
}
我有一个User
可以解密user
密钥的结构:
struct User: Codable {
let id: Int
let username: String
}
由于id
和username
是的属性user
,而不是根目录级别,因此我需要制作一个包装器类型,如下所示:
struct UserWrapper: Codable {
let user: User
}
然后,我可以通过解码JSON UserWrapper
,也User
可以解码。似乎有很多冗余代码,因为我需要为每种类型添加一个额外的包装器。有没有办法避免这种包装模式,或更正确/优雅的方式来处理这种情况?
您可以使用字典进行解码:用户组合然后提取出用户对象。例如
struct User: Codable {
let id: Int
let username: String
}
let decoder = JSONDecoder()
let userDictionary = try decoder.decode([String: User].self, from: jsonData)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句