Swift 4可解码协议如何处理包含密钥的字典,该密钥的名称在运行时才知道?例如:
[
{
"categoryName": "Trending",
"Trending": [
{
"category": "Trending",
"trailerPrice": "",
"isFavourit": null,
"isWatchlist": null
}
]
},
{
"categoryName": "Comedy",
"Comedy": [
{
"category": "Comedy",
"trailerPrice": "",
"isFavourit": null,
"isWatchlist": null
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
这里我们有一系列字典; 所述第一有键categoryName和Trending,而第二个有密钥categoryName和Comedy.categoryName键的值告诉我第二个键的名称.如何使用Decodable表达?
我正在使用Codable带有JSON数据的Swift 4 协议.我的数据被格式化为在根级别有一个键,其中一个对象值包含我需要的属性,例如:
{
"user": {
"id": 1,
"username": "jdoe"
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个User可以解码user密钥的结构:
struct User: Codable {
let id: Int
let username: String
}
Run Code Online (Sandbox Code Playgroud)
由于id和username是的性质user,而不是在根级别,我需要使一个包装类型,如下所示:
struct UserWrapper: Codable {
let user: User
}
Run Code Online (Sandbox Code Playgroud)
然后,我可以通过UserWrapper,解码JSON ,并User解码.它似乎是很多冗余代码,因为我需要在我拥有的每种类型上都有一个额外的包装器.有没有办法避免这种包装模式或更正确/优雅的方式来处理这种情况?