Swift 4 представил поддержку собственного кодирования и декодирования JSON через протокол Decodable
. Как использовать для этого специальные клавиши?
Например, скажем, у меня есть структура
struct Address:Codable {
var street:String
var zip:String
var city:String
var state:String
}
Я могу закодировать это на JSON.
let address = Address(street: "Apple Bay Street", zip: "94608", city: "Emeryville", state: "California")
if let encoded = try? encoder.encode(address) {
if let json = String(data: encoded, encoding: .utf8) {
// Print JSON String
print(json)
// JSON string is
{ "state":"California",
"street":"Apple Bay Street",
"zip":"94608",
"city":"Emeryville"
}
}
}
Я могу закодировать это обратно к объекту.
let newAddress: Address = try decoder.decode(Address.self, from: encoded)
Но если у меня был объект json, который был
{
"state":"California",
"street":"Apple Bay Street",
"zip_code":"94608",
"city":"Emeryville"
}
Как я могу сказать декодеру Address
, что zip_code
отображается на zip
? Я считаю, что вы используете новый протокол CodingKey
, но я не могу понять, как это использовать.