Синтаксический сахар для парсинга JSON в Swift
Декодирование и кодирование JSON стало простым после появления протокола Codable в Swift 4.0. Но в процессе разработки мне хотелось чего-то более короткого и изящного, чем конструкция Do-Catch вида:
var myModel: MyModel?
let decoder = JSONDecoder()
do {
myModel = try decoder.decode(MyModel.self, from: data)
} catch {
print(error.localizedDescription)
}
Или вот такого:
let myModel: MyModel? = try? decoder.decode(MyModel.self, from: data)
Поэтому я написал протокол с реализацией по умолчанию, который позволяет декодировать вот так:
let myModel = MyModel.decodeFromData(data: data)
И так же — кодировать:
let data = MyModel.encode(fromEncodable: myModel)
Всё, что нужно, — добавить соответствие протоколу:
extension MyModel: Parseable {
typealias ParseableType = Self
}
Доступно на GitHub как Swift Package: https://github.com/makoni/parsable
// ─── EOF ──────────────────────────────────────────────────