码迷,mamicode.com
首页 > 编程语言 > 详细

Swift4 JSON解析

时间:2017-06-18 16:16:37      阅读:1183      评论:0      收藏:0      [点我收藏+]

标签: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之间的转换

Swift4 JSON解析

标签:crazy   copy   prot   protocol   coder   from   sha   typealias   mod   

原文地址:http://www.cnblogs.com/kongkaikai/p/7044482.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!