Как можно представить JSON с помощью структуры Codable, если ключи не определены?

Я хотел бы представить следующий JSON в виде структуры, которая соответствует Codable:

{
    "trooper": {"name": "Trooper", "type": "alsatian"},
    "spot": {"name": "Spot", "type": "labrador"},
    "sniffles": {"name": "Sniffles", "type": "poodle"}
}

Список не является исчерпывающим, то есть в списке может быть любое количество собак.

{"name": "Sniffles", "type": "poodle"} часть проста, и может быть сделано так:

struct Dog: Codable {
    var name: String
    var type: String
}

Но как насчет корневого уровня?

1 ответ

Вот что я искал:

let str = """
{
    "trooper": {"name": "Trooper", "type": "alsatian"},
    "spot": {"name": "Spot", "type": "labrador"},
    "sniffles": {"name": "Sniffles", "type": "poodle"}
}
"""

struct Dog: Codable {
    var name: String
    var type: String
}

if let data = str.data(using: .utf8) {

    do {
        let decoder = JSONDecoder()
        let dogs = try decoder.decode([String: Dog].self, from: data)
        print(dogs)
    } catch {
        print(error)
    }

}
Другие вопросы по тегам