Вам нужно создать контейнер, например, с именем «Currencies», чтобы использовать контейнер с одним значением.
Я поделюсь с вами примером игровой площадки:
let str = """
{
"AED": "United Arab Emirates Dirham",
"AFN": "Afghan Afghani",
"ALL": "Albanian Lek",
}
"""
struct Currencies: Codable {
var values: [Currency]
init(from decoder: Decoder) throws {
let container = try decoder.singleValueContainer()
let dict = try container.decode([String: String].self)
values = dict.map({ (key, value) in
return Currency(code: key, name: value)
})
}
}
struct Currency: Codable {
var code: String
var name: String
enum CodingKeys: String, CodingKey {
case code
case name
}
}
let currencies = try JSONDecoder().decode(Currencies.self, from: Data(str.utf8))
print(currencies.values)