Swift基础之Encoding 和 Decoding
来源:互联网 发布:MySQL设置主键 编辑:程序博客网 时间:2024/06/08 10:16
Swift 4给我们带来了 Codable 协议,让对象转 JSON Data 变得如此的简单有许多不同的场景,您希望将您的 Class 换为数据。 一个非常常见的需求是 HTTP POST 请求的时候 JSON 数据作为 HTTP Body。 最常见的方法之一如下所示:
JSONSerialization class 负责返回 Data 对象,从而作为 HTTP 的请求体。
JSONEncoder and JSONDecoder in Swift 4
Swift 4 有两个类 JSONEncoder 和 JSONDecoder ,可以方便地用于对象和 JSON 之间进行转化:
typealias Codable = Decodable & Encodable
使用 Codable 协议指明 Language struct 可被编码和解码,然后使用 JSONEncoder 类的 encode 方法进行编码。
我们再看看下面这段代码,可以发现单纯的编码解码变得非常的简洁。
很简单吧! 我们甚至可以通过使用协议和扩展来使其更简单。 我们创建一个自定义的可序列化协议来执行编码。
Serializable
但是这样还是需要创建 JSONEncoder 和 JSONDecoder 来为我们处理编解码,我们可以使用 协议和扩展来简化这些操作,举个例子。
为了不让每个遵从 Serializable 的 class/struct 都是实现这个方法,扩展这个协议方法。
上面这段代码,会报如下错误:
Playground execution failed: error: MyPlayground.playground:8:36: error: argument type ‘Self’ does not conform to expected type ‘Encodable’return try? encoder.encode(self)
因为 Serializable 还不是 Codable ,所以还需要做些修改
现在,您可以使用自建的协议轻松地对您的模型进行编码,如下所示:
注意:把 Language 从 “Codable” 换成 “Serializable” 协议。
阅读全文
0 0
- Swift基础之Encoding 和 Decoding
- encoding / decoding
- 用Python实现URL Encoding和Decoding
- Encoding-Decoding: file-encoding
- URL Encoding/Decoding
- Telegram Encoding and Decoding
- Haffman Encoding and Decoding
- swift基础之?和!
- URL Encoding/Decoding in C
- java URL encoding and decoding
- 采用VB的编码和解码过程(VB encoding and decoding)
- Gamma codes(γ 编码)的编码和解码过程(encoding and decoding of Gamma codes)
- 字符串编码(charset,encoding/decoding)问题原理
- msdn Encoding and Decoding a Hashed Message
- 字符串编码(charset, encoding/decoding)问题原理
- 字符串编码(charset, encoding/decoding)问题原理
- Encoding and decoding base64 with C++
- [转]encoding and decoding base64 with c++
- curl模拟post提交数据
- Silverlight实用窍门系列:47.Silverlight中元素到元素的绑定,以及ObservableCollection和List的使用区别
- 一个简单的heat模板,仅做自己参考
- 数据存储方式(IO-SharedPreferences)
- bootstrap-treeview的使用实例使用递归后台拼接Json串
- Swift基础之Encoding 和 Decoding
- 十步完全理解 SQL
- 《intellij idea学习经历》-01- 异常:Warning:java: 源值1.5已过时, 将在未来所有发行版中删除
- 机器学习笔记之梯度下降(二)
- js正则表达式椒盐总结
- HDU 5543 Pick The Sticks【三维dp】
- 图片的Base64编码
- 试简介视频编码技术?——知乎大神神回答
- [NOIP2017模拟]切蛋糕