Swift: Из структуры в JSON без Codable
Всем привет! Сторонняя сдк десереализует json, приходящий c сервера, в структуру, которая подписана под Decodable, а мне нужно наоборот, из нее получить json строку. Подписать сдкашную структуру под Codable, понятное дело, я не могу
struct User: Decodable {
let id: String
let name: String
let verification: Sdk.VerificationType
}
print(user)
// User(id: "12345", name: "Max", verification: Sdk.User.VerificationType.notRequired)
Есть варианты, как из этого получить json?
Ответы (1 шт):
Автор решения: VAndrJ
→ Ссылка
Подписать нет. Но что есть Codable? Это Decodable и Encodable. Так что можно её просто расширить:
extension User: Encodable {}
И загонять в JSONEncoder.
Расширенный пример:
extension User: Encodable {
enum CodingKeys: String, CodingKey {
case id
case name
case verification = "sdk_verification_type" //для примера
}
func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(id, forKey: .id)
try container.encode(name, forKey: .name)
try container.encode(verification, forKey: .verification) // Для Sdk.VerificationType в зависимости от надобности свой Encodable/конвертацию в другой формат
}
}