mvm_core_ui/MVMCoreUI/Models/Encoder.swift
Suresh, Kamlesh 37e1cb9e36 changes
2019-11-04 17:24:04 -05:00

28 lines
802 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 encode(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
}
}