Создать класс, который подтверждает декодируемый протокол; CarInfo например в вашем случае
class CarInfo: Decodable
Создание атрибутов класса
var color: String
var engine: String
Создание перечисления ключей JSON, которое наследуется от CodingKey
enum CarInfoCodingKey: String, CodingKey {
case color
case engine
}
внедрить init
required init(from decoder: Decoder) throws
класс будет
class CarInfo: Decodable {
var color: String
var engine: String
enum CarInfoCodingKey: String, CodingKey {
case color
case engine
}
public init(from decoder: Decodabler) throws {
let container = try decoder.container(keyedBy: CarInfoCodingKey.self)
self.color = try container.decode(String.self, forKey: .color)
self.engine = try contaire.decode(String.self, forKey: .engine)
}
}
декодер вызовов
let carinfo = try JsonDecoder().decode(CarInfo.self, from: jsonData)