📜  在 swift 中将结构转换为 json(1)

📅  最后修改于: 2023-12-03 15:23:19.912000             🧑  作者: Mango

在 Swift 中将结构转换为 JSON

现在多数应用程序都需要与后台服务器进行通信。而最常见的一种数据交换机制是JSON。在这里,我们将简要介绍如何在Swift中将结构转换为JSON。

目录
  1. 前置知识
  2. 确定结构
  3. 转换为 JSON
  4. 结论
1. 前置知识

在将结构转换为JSON之前,需要了解两个重要的类:JSONEncoderCodable

JSONEncoder

JSONEncoder 是一个Swift库中的类,用于将数据结构转换为JSON格式。它带有一个名为encode(:)的方法,该方法将接受一个实现Encodable协议的数据结构并返回JSON数据。

Codable

Codable是Swift 4中的新协议,它是一种轻量级的解析JSON格式数据的方式。它组合了Encodable协议和Decodable协议,同时还可以让我们将数据结构p转换为JSON格式字符串或者将JSON格式字符串解析为数据结构。

2. 确定结构

在将任何结构转换为JSON之前,需要确定该结构和最终的JSON格式。以下是一个简单的示例结构:

struct Person: Codable {
  var name: String
  var age: Int
  var address: String
  var phoneNumber: String
}
3. 转换为 JSON

现在,假设我们有一个包含多个Person实例的数组,我们可以将其转换为JSON格式。在此之前,我们定义一个Person实例数组:

let people:[Person] = [
  Person(name: "张三", age: 29, address: "北京市朝阳区", phoneNumber: "13888888888"),
  Person(name: "李四", age: 33, address: "北京市海淀区", phoneNumber: "13999999999"),
  Person(name: "王五", age: 25, address: "北京市东城区", phoneNumber: "18888888888")]

现在我们可以使用JSONEncoder将该人员数组转换为JSON格式。

let encoder = JSONEncoder()
if let jsonData = try? encoder.encode(people) {
  // jsonData is a Data object
  let jsonString = String(data: jsonData, encoding: .utf8)
  print(jsonString)
}

这将打印以下JSON格式字符串。

[
  {"address":"北京市朝阳区","age":29,"name":"张三","phoneNumber":"13888888888"},
  {"address":"北京市海淀区","age":33,"name":"李四","phoneNumber":"13999999999"},
  {"address":"北京市东城区","age":25,"name":"王五","phoneNumber":"18888888888"}
]
4. 结论

在Swift中将结构转换为JSON格式非常简单。我们可以使用JSONEncoder类将数据结构编码为JSON数据,并使用Codable协议的优点轻松快速地将JSON格式字符串解析为数据结构。