标签:crazy copy prot protocol coder from sha typealias mod
说起来,Swift4提供了两个类(JSONEncoder, JSONDecoder)用于JSON的序列化和反序列化,
尝试了下,可以将自定义对象(允许多层嵌套)转换成JSON data 也可以反向解析成Model
但是每次都要写很长一串代码比较麻烦,这里我们使用Swift的特性,协议和协议扩展来实现快捷的Model 和 JSON的互转
创建一个Swift FILE
// // Json.swift // SwiftJSON // // Created by Crazy凡 on 2017/6/18. // Copyright ? 2017年 FaciShare. All rights reserved. // import Foundation typealias JSONCodable = Decodable & Encodable protocol JSONParser : JSONCodable { func toJSONData() -> Data? static func modelWithJSONData(data:Data) -> Any? func toJSONString() -> String? static func modelWithJSONString(string:String) -> Any? } extension JSONParser{ func toJSONData() -> Data? { return try? JSONEncoder().encode(self) } static func modelWithJSONData(data:Data) -> Any?{ return try? JSONDecoder().decode(Self.self, from: data) } func toJSONString() -> String?{ return String.init(data: self.toJSONData()!, encoding: String.Encoding.utf8) } static func modelWithJSONString(string:String) -> Any?{ return self.modelWithJSONData(data: string.data(using: String.Encoding.utf8)!) } }
写入上部分代码,然后 自定义类实现JSONParser协议即可实现默认的JSON和MODEL之间的转换
标签:crazy copy prot protocol coder from sha typealias mod
原文地址:http://www.cnblogs.com/kongkaikai/p/7044482.html