Swift 4 - 如何像java中的Gson一样自动将Json转换为swift对象

swiftJavaJS

1个回答

写回答

小禾凝竹

2025-08-21 12:30

+ 关注

Swift
Swift

如何使用 Swift 4 将 JSON 自动转换为 Swift 对象

在开发移动应用程序时,经常需要将从服务器返回的 JSON 数据转换为 Swift 对象。这样可以方便地处理数据,并更好地与应用程序的其他部分进行交互。与 Java 中的 Gson 类似,Swift 4 也提供了一种简便的方法来自动将 JSON 转换为 Swift 对象。在本文中,我们将介绍如何使用 Swift 4 的 Codable 协议来实现这一功能。

使用 Codable 协议

Swift 4 引入了 Codable 协议,它是一个组合协议,包含了 Encodable 和 Decodable 两个协议。Encodable 协议用于将 Swift 对象编码为 JSON 数据,而 Decodable 协议用于将 JSON 数据解码为 Swift 对象。通过遵循 Codable 协议,我们可以轻松地实现 JSON 和 Swift 对象之间的转换。

创建 Swift 对象

首先,我们需要创建一个 Swift 对象来表示我们要从 JSON 转换的数据。假设我们有一个名为 User 的类,它有一个名为 name 的字符串属性和一个名为 age 的整数属性。

Swift

struct User: Codable {

var name: String

var age: Int

}

上述代码中,我们使用了 Swift 4 引入的 struct 关键字来定义一个结构体 User。该结构体遵循了 Codable 协议,并包含了我们要转换的属性。

JSON 转换为 Swift 对象

接下来,我们需要将从服务器返回的 JSON 数据转换为我们的 Swift 对象。Swift 4 提供了一个 JSONDecoder 类来实现这一功能。

假设我们从服务器获取了以下 JSON 数据:

JSon

{

"name": "John",

"age": 25

}

我们可以使用以下代码将其转换为 Swift 对象:

Swift

let JSon = """

{

"name": "John",

"age": 25

}

""".data(using: .utf8)

let decoder = JSONDecoder()

let user = try decoder.decode(User.self, from: JSon!)

print(user.name) // 输出 "John"

print(user.age) // 输出 25

在上述代码中,我们首先将 JSON 数据转换为 Data 对象。然后,我们使用 JSONDecoder 类创建一个解码器,并使用 decode() 方法将 JSON 数据解码为 User 对象。最后,我们可以访问 User 对象的属性并输出其值。

Swift 对象转换为 JSON

除了将 JSON 转换为 Swift 对象外,我们还可以将 Swift 对象转换为 JSON 数据。Swift 4 提供了一个 JSONEncoder 类来实现这一功能。

假设我们有一个 User 对象,我们可以使用以下代码将其转换为 JSON 数据:

Swift

let user = User(name: "John", age: 25)

let encoder = JSONEncoder()

let JSonData = try encoder.encode(user)

let JSonString = String(data: JSonData, encoding: .utf8)

print(JSonString!) // 输出 {"name":"John","age":25}

在上述代码中,我们首先创建一个 User 对象。然后,我们使用 JSONEncoder 类创建一个编码器,并使用 encode() 方法将 User 对象编码为 JSON 数据。最后,我们将 JSON 数据转换为字符串,并输出字符串内容。

在本文中,我们介绍了如何使用 Swift 4 的 Codable 协议将 JSON 自动转换为 Swift 对象。我们首先创建了一个遵循 Codable 协议的 Swift 对象,然后使用 JSONDecoder 类将 JSON 数据解码为 Swift 对象。我们还学习了如何使用 JSONEncoder 类将 Swift 对象编码为 JSON 数据。这种方式使得处理 JSON 数据变得更加简便和高效,大大提升了开发效率。

希望本文对你理解如何在 Swift 4 中将 JSON 转换为 Swift 对象有所帮助。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号