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?