Swift4 JSON解析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift4 JSON解析相关的知识,希望对你有一定的参考价值。

说起来,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解析的主要内容,如果未能解决你的问题,请参考以下文章

解析 JSON 数据时出错(Swift 4 Playground)

swift 4 使用 Alamofire 解析没有键的 JSON

Swift 4 可解码的 json 数组

在 SWIFT 4 中解析嵌套的 JSON

Swift 4 将字符串解析为 json 对象

片段中的 JSON 解析 [关闭]