Ваши CodingKeys
соответствуют именам свойств, так что вы можете избавиться от enum
на всех
struct UserHosting: Codable {
let companyName: String
let website: String
let street: String
let housenumber: String
let zip: String
let city: String
}
Поскольку у вас есть несколько ключей регистра змей в JSON, вы можете изменить JSONDecoder.keyDecodingStrategy в convertFromSnakeCase
, например,
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
Выше декодер будет обрабатывать ключи, такие как company_name
, которые будут назначены для companyName
свойства вашей структуры.
Наконец, вы можете декодировать вашJSON в блоке do-catch
, поэтому в случае ошибки у нас будет сообщение о том, что пошло не так.
do {
self.dataSource = try decoder.decode([UserHosting].self, from: data)
} catch {
print("JSON Decoding Error \(error)")
}