美文网首页iOS手记
Swift4 Json的编译和反编译

Swift4 Json的编译和反编译

作者: maguns | 来源:发表于2017-06-28 21:52 被阅读121次

原文链接点击跳转

原文标题是Swift 4 Codable, JSON Handling Made Easy

副标题 Data Can Make You Cry(有没有这么激动)


现在可以用很少的代码实现json的编译与反编译了。虽然有大量的第三方库可以实现该功能,但是Swift系统库也实现了该功能。下面了解一下新的协议。
需求

现在有一个小需求,我们需要发送json数据并释放并释放内存。在Swift3.0时我们需要写大量的工厂代码去进行编译与反编译。现在,当数据结构需要改变或者必须改变呢?我们需要每次重写代码。
对于如此时尚的语言,有没有更好的解决方式?
解决方案
Swift给出了更好的解决方案,更好的是,仅需一个字。
Codable
继承了2个协议的一个字,仅仅需要继承Codable并通过创建的编译或反编译对象,编译器会很优秀的完成映射操作。

  • 第一步
    假设我们有个Person的结构体,需要通过编译器实现结构体到json数据的编译,第一步当然是创建结构体。
    Struct Person : Codable{
    enum Gender:String,Codable {
    case Male,Female,Alien
    }
    var name : String
    var userName : String
    var gender:[Gender]
    }

结构体包含一些变量,像是name,username,gender是一个枚举,用于表示有限的有限制的数据选项。
创建一个Person的实例对象

  let person = Person(name : "Peter",userName : "pwitham",gender :[.Alien])

  • 编译为json
    在实现转化之前,需要创建JSONEncoder实例对象,通过创建的数据对象保存编译实例,这里通过String展示对应的数据

    let jsonencoder = JSONEncoder()
    let jsonData = jsonencoder.encode(person)
    let stringData = String(data : jsonData, encoding : .utf8)
    printf(stringData)
    

  • 反编译json
    在反编译之前,需要创建JSONDecoder实例对象,通过该对象反编译并创建一个容器保存数据。最后打印,查看数据结构

    let jsonDecoder = JSONDecoder()
    let decodePerson = try jsonDecoder.decoder(Person.self,from:jsonData)
    printf(decodePerson)
    

  • 包装
    现在该协议已经翘首以盼。当修改结构体时,Swift4会自动映射转换成对应的数据结构。

在众多第三方库中,也许这才是最好的选择。
(不是很同意,我使用第三方只是为了比较全面的数据类型转化,鬼知道后台传过来的数据到底是什么格式的)

相关文章

  • Swift4 Json的编译和反编译

    原文链接点击跳转 原文标题是Swift 4 Codable, JSON Handling Made Easy 副标...

  • 反编译研究资料以及各种反编译器

    硕期间研究反编译,下面从反编译工具库,JAVA反编译和反编译主要研究机构进行介绍。 反编译的历史,从传统的基于编译...

  • dtb文件编译

    反编译 编译 批量反编译

  • Android逆向工程

    一 : 反编译 获取到需要的apk 包,利用反编译工具进行反编译. 反编译工具:Android Killer 首先...

  • Android 反编译

    1、反编译工具 APK TOOL :谷歌提供的 APK 编译工具,可以反编译和回编译。我们都知道,其实 APK 就...

  • 反编译软件+sql注入方式

    反编译 什么是反编译?高级语言源程序经过 编译 变成可执行文件,反编译就是逆过程。 -反编译的工具 1、 jsfi...

  • java注解

    使用 定义注解 使用注解 反编译 反编译MyAnnotation.class 反编译注解MyAnnotation$...

  • Android反编译与反编译防范

    Android反编译与反编译防范 反编译Java代码 参考http://www.oschina.net/quest...

  • Android反编译

    反编译就是对这个APK进行反编译。Android的反编译分成两个部分: 一个是对代码反编译,也就是java文件的反...

  • dex2jar+jd-gui 反编译apk包

    反编译教程:利用dex2jar和jd-gui反编译和查看Android的apk源码https://blog.csd...

网友评论

    本文标题:Swift4 Json的编译和反编译

    本文链接:https://www.haomeiwen.com/subject/phrpcxtx.html