Я использую протокол Swift 4 Codable с данными JSON. Мои данные отформатированы таким образом, что на корневом уровне есть один ключ с значением объекта, содержащим необходимые мне свойства, например:
{
"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. Это похоже на много избыточного кода, так как мне понадобится дополнительная оболочка для каждого типа, который у меня есть. Есть ли способ избежать этого шаблона обертки или более правильного/элегантного способа обработки этой ситуации?