1. 程式人生 > >Swift4 JSON解析

Swift4 JSON解析

反向 toc 多層嵌套 反向解析 right json pan 快捷 proto

說起來,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之間的轉換

Swift4 JSON解析