课题

  • 将 JSON 字符串反序列化为 Persons 类(结构)的对象 ,然后将这个对象序列化为 JSON 字符串。
  • Persons 类(结构)包含一个字段:Person 类(结构)的 persons 数组。
  • Person 类(结构)包含两个字段:字符串类型的 name 字段和整数类型的 age 字段。

Codable

public typealias Codable = Decodable & Encodable
public protocol Decodable {}
public protocol Encodable {}

Swift 对象与 JSON 数据相互转换的关键是实现 Codable 接口。

示例

import Foundation

struct Persons : Codable {
let persons: [Person]
} struct Person : Codable {
let name: String
let age: Int
// only necessary when we want to customize the keys
enum CodingKeys : String, CodingKey {
case name = "name"
case age = "age"
}
} let jsonString = """
{
"persons" : [
{
"name" : "Joe",
"age" : 12
}
]
}
"""
let jsonData = jsonString.data(using: .utf8)!
let decoder = JSONDecoder()
let o = try! decoder.decode(Persons.self, from: jsonData)
print(o) // Persons(persons: [__lldb_expr_65.Person(name: "Joe", age: 12)]) let encoder = JSONEncoder()
//encoder.outputFormatting = .prettyPrinted
let data = try! encoder.encode(o)
print(String(data: data, encoding: .utf8)!) // {"persons":[{"name":"Joe","age":12}]}

参考链接

Ultimate Guide to JSON Parsing with Swift 4

http://www.jsoncafe.com/ 可以根据 JSON 数据自动生成实现 Codable 的 Swift 类。

JSON数据的解析和生成(Swift)的更多相关文章

  1. JSON数据的解析和生成(C++)

    安装 "JSON for Modern C++" $ brew tap nlohmann/json $ brew install nlohmann_json 安装之后将/usr/l ...

  2. VBS进行http请求及JSON数据的读取和生成

    背景: 近期帮一个公司做第三方API的二次封装,需要部署到该公司网站.所获取的是Json数据格式.由于该公司原系统采用的ASP+VBS技术方案,因此采用VBS对API进行请求.封装. 实现: 废话不多 ...

  3. Android 之 json数据的解析(jsonReader)

    json数据的解析相对而言,还是比较容易的,实现的代码也十分简单.这里用的是jsonReade方法来进行json数据解析. 1.在解析之前,大家需要知道什么是json数据. json数据存储的对象是无 ...

  4. iOS开发网络篇—JSON数据的解析

    iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式 ...

  5. HttpURLConnection从网上获取Json数据并解析详解

    HttpURLConnection从网上获取Json数据并解析 1.HttpURLConnection请求数据的步骤 (1)构造一个URL接口地址: URL url = new URL("h ...

  6. javascript中 json数据的解析与序列化

    首先明确一下概念: json格式数据本质上就是字符串: js对象:JavaScript 中的几乎所有事务都是对象:字符串.数字.数组.日期.函数,等等. json数据的解析: 就是把后端传来的json ...

  7. android基础---->JSON数据的解析

    上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...

  8. android客户端从服务器端获取json数据并解析的实现代码

    今天总结一下android客户端从服务器端获取json数据的实现代码,需要的朋友可以参考下   首先客户端从服务器端获取json数据 1.利用HttpUrlConnection /** * 从指定的U ...

  9. (转)android客户端从服务器端获取json数据并解析的实现代码

    今天总结一下android客户端从服务器端获取json数据的实现代码,需要的朋友可以参考下       首先客户端从服务器端获取json数据 1.利用HttpUrlConnection   复制代码 ...

随机推荐

  1. [UE4]下拉菜单

  2. 用wiershark抓dns数据包

    wireshark是非常好的抓包工具,捕获工具也很强大.比如说我只要抓dns数据包,其他数据包全部丢弃. 步骤如下: 选择菜单->捕获-捕获接口-输入-所选择接口的捕获过滤器:port 53 1 ...

  3. 在Ubuntu16.04下安装 labelImg

    首先按照 http://www.linuxdiyf.com/linux/13934.html 和 http://www.linuxdiyf.com/linux/13934.html  在ubuntu ...

  4. Oracle数据库类型

    Oracle数据库类型 字符类型char[(length)] 定长字符 最长2000字节varchar2[(length)] 可变长度的字符数据类型,最长4000字节NCHAR[(length)] 固 ...

  5. (转)SQL知识_SQL Case when 的使用方法

    原文地址:http://www.cnblogs.com/yazdao/archive/2009/12/09/1620482.html Case具有两种格式.简单Case函数和Case搜索函数. --简 ...

  6. PHP:引用Phpword导出数据到word文档

    下载地址https://www.cnwenhui.cn/html/show-597.html(其中有中文使用手册可以下载看看) 1.首先要下载Phpword类库,放在如下图目录下 2.调用方法 pub ...

  7. 基于Linux命令行KVM虚拟机的安装配置与基本使用

    背景 由于生产环境的服务器并不会安装桌面环境,简单操作的图形化安装也不适合批量部署安装.因此,我还是更倾向于在命令下安装配置KVM虚拟机.结合了一些资料和个人使用的状况,我大致列出了一些基本和常用的使 ...

  8. Solr——Windows下部署Solr7.5.0至jetty、Tomcat

    Solr6用默认的Jetty启动 需要的软件支持 JDK1.8以上 Solr6的安装包(solr-7.5.0.zip ) Solr自带一个Jetty环境,可以很方便的运行Solr. 直接到解压缩的so ...

  9. kafka 消息系统

    一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...

  10. 打jar包的几种方式

    测试用类public class Hello {    public static void main(String[] args) {        System.out.println(" ...