mvm_core_ui/MVMCoreUI/Models/Encoder.swift
Suresh, Kamlesh 205c83c097 intial draft
2019-10-28 14:47:42 -04:00

28 lines
809 B
Swift

import Foundation
public protocol AnyEncoder {
func encode<T: Encodable>(_ value: T) throws -> Data
}
extension JSONEncoder: AnyEncoder {}
extension PropertyListEncoder: AnyEncoder {}
extension Encodable {
public func encodeToData(using encoder: AnyEncoder = JSONEncoder()) throws -> Data {
return try encoder.encode(self)
}
public func toJSON() -> JSONObject? {
guard let data = try? self.encode() else { return nil }
return (try? JSONSerialization.jsonObject(with: data, options: .allowFragments)).flatMap { $0 as? JSONObject }
}
public func toJSONString() -> String? {
guard let data = try? self.encode(),
let string = String(data: data, encoding: .utf8) else {
return nil
}
return string
}
}