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