Недавно я включил Codable
в проект и для получения объекта JSON
из типа, соответствующего Encodable
я придумал это расширение,
extension Encodable {
/// Converting object to postable JSON
func toJSON(_ encoder: JSONEncoder = JSONEncoder()) -> [String: Any] {
guard let data = try? encoder.encode(self) else { return [:] }
guard let object = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) else { return [:] }
guard let json = object as? [String: Any] else { return [:] }
return json
}
}
Это работает хорошо, но можетбыть ли лучший способ достичь того же?Я чувствую, что могут возникнуть проблемы с производительностью, когда частые вызовы jsonObject(with:
для объекта с большим data
.