У меня есть JSON с идентификаторами на корневом уровне:
{
"12345": {
"name": "Pim"
},
"54321": {
"name": "Dorien"
}
}
Моя цель - использовать Codable для создания массива объектов User, имеющих свойства как name, так и ID.
struct User: Codable {
let id: String
let name: String
}
Я знаю, как использовать Codable с одним ключом корневого уровня , и я знаю, как работать с неизвестными ключами . Но то, что я пытаюсь сделать здесь, это комбинация обоих, и я понятия не имею, что делать дальше.
Вот что я получил до сих пор: (Вы можете вставить это на игровой площадке)
import UIKit
var json = """
{
"12345": {
"name": "Pim"
},
"54321": {
"name": "Dorien"
}
}
"""
let data = Data(json.utf8)
struct User: Codable {
let name: String
}
let decoder = JSONDecoder()
do {
let decoded = try decoder.decode([String: User].self, from: data)
decoded.forEach { print($0.key, $0.value) }
// 54321 User(name: "Dorien")
// 12345 User(name: "Pim")
} catch {
print("Failed to decode JSON")
}
Вот что я хотел бы сделать:
let decoder = JSONDecoder()
do {
let decoded = try decoder.decode([User].self, from: data)
decoded.forEach { print($0) }
// User(id: "54321", name: "Dorien")
// User(id: "12345", name: "Pim")
} catch {
print("Failed to decode JSON")
}
Любая помощь очень ценится.