Swift4 JSON解析

时间:2017-06-18 16:16:37   收藏:0   阅读:1183

说起来,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之间的转换

评论(0)
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!