Свойства декодирования в Swift / Decodable - PullRequest
0 голосов
/ 14 октября 2019

Запрос JSON дает мне следующую структуру:

"Name": [{
                        "@LanguageCode": "xx",
                        "$": "Cologne - Cologne\/Bonn Airport"
                    }, {
                        "@LanguageCode": "de",
                        "$": "Köln - Köln\/Bonn Flughafen"
                    }, {
                        "@LanguageCode": "pt",
                        "$": "Colónia"
                    }, {
                        "@LanguageCode": "ja",
                        "$": "ケルン - ケルン \/ ボン"
                    }, {
                        "@LanguageCode": "en",
                        "$": "Cologne - Cologne\/Bonn Airport"
                    }, {
                        "@LanguageCode": "it",
                        "$": "Colonia - Colonia-Bonn Airport"
                    }, {
                        "@LanguageCode": "fr",
                        "$": "Cologne - Cologne\/Bonn Airport"
                    }, {
                        "@LanguageCode": "es",
                        "$": "Cologne - Cologne\/Bonn Airport"
                    }, {
                        "@LanguageCode": "nl",
                        "$": "Keulen"
                    }]

Кто-нибудь знает, как справиться с этим в структуре Swift Decodable, подходящей для JSONDecoder ??

1 Ответ

2 голосов
/ 14 октября 2019

Вы можете использовать CodingKeys для декодирования этого json:

struct Message: Codable {
    let name: [Language]

    enum CodingKeys: String, CodingKey {
        case name = "Name"
    }
}

struct Language: Codable {
    var code: String
    var message: String

    enum CodingKeys: String, CodingKey {
        case code = "@LanguageCode"
        case message = "$"
    }
}

, а затем:

do {
    let decoder = JSONDecoder()
    let object = try decoder.decode(Message.self, from: jsonData)
} catch {
    print("\(error)")
}
...