I'm using the Swift 4 Codable
protocol with JSON data. My data is formatted such that there is a single key at the root level with an object value containing the properties I need, such as:
{
"user": {
"id": 1,
"username": "jdoe"
}
}
I have a User
struct that can decode the user
key:
struct User: Codable {
let id: Int
let username: String
}
Since id
and username
are properties of user
, not at the root level, I needed to make a wrapper type like so:
struct UserWrapper: Codable {
let user: User
}
I can then decode the JSON via the UserWrapper
, and the User
is decoded also. It seems like a lot of redundant code since I'll need an extra wrapper on every type I have. Is there a way to avoid this wrapper pattern or a more correct/elegant way of handling this situation?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…