在 Swift/Decodable 中解码属性



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"
}]

有谁知道如何在适合 JSONDecoder 的 Swift Decodable 结构中处理这个问题?

您可以使用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)")
}

最新更新