Swift 4 解码简单根级别 json 值

swiftJS

1个回答

写回答

sgsisksv

2025-09-11 16:20

+ 关注

Swift
Swift

使用 Swift 4 解码简单根级别的 JSON 值 是一项相当简单的任务。当我们从网络请求或其他来源获取到 JSON 数据时,我们可以使用 Swift 中的 JSONDecoder 类来解码这些数据并将其转换为 Swift 对象或结构体。在本文中,我们将探讨如何使用 Swift 4 解码简单根级别的 JSON 值,并通过一个案例代码来演示。

首先,我们需要创建一个结构体或类来表示我们要解码的 JSON 数据。在这个例子中,我们将使用一个简单的用户对象作为示例。用户对象有两个属性:name 和 age。我们的 JSON 数据如下所示:

{

"name": "John",

"age": 25

}

我们可以通过创建一个名为 User 的结构体来表示这个 JSON 数据:

struct User: Codable {

let name: String

let age: Int

}

要解码这个 JSON 数据,我们需要进行以下几个步骤:

1. 首先,我们需要将 JSON 数据转换为 Data 对象。这可以通过使用 String 类型的 JSON 数据和 .utf8 编码来完成:

let JSonString = """

{

"name": "John",

"age": 25

}

"""

guard let JSonData = JSonString.data(using: .utf8) else {

fatalError("FAIled to convert JSON string to data.")

}

2. 接下来,我们需要创建一个 JSONDecoder 对象来进行解码。我们可以使用默认的初始化方法来创建一个 JSONDecoder 对象:

let decoder = JSONDecoder()

3. 然后,我们需要使用 decode(_:from:) 方法来解码 JSON 数据并将其转换为我们的 User 结构体对象:

do {

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

print("Name: \(user.name)")

print("Age: \(user.age)")

} catch {

print("FAIled to decode JSON: \(error.localizedDescription)")

}

在上面的代码中,我们使用 decode(_:from:) 方法来解码 JSON 数据。我们指定了要解码的对象类型(User.self)和要解码的数据(JSonData)。如果解码成功,我们将能够访问 User 对象中的属性,并将它们打印出来。如果解码失败,我们将打印出错误信息。

案例代码

下面是一个完整的案例代码,演示了如何使用 Swift 4 解码简单根级别的 JSON 值:

Swift

import Foundation

struct User: Codable {

let name: String

let age: Int

}

let JSonString = """

{

"name": "John",

"age": 25

}

"""

guard let JSonData = JSonString.data(using: .utf8) else {

fatalError("FAIled to convert JSON string to data.")

}

let decoder = JSONDecoder()

do {

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

print("Name: \(user.name)")

print("Age: \(user.age)")

} catch {

print("FAIled to decode JSON: \(error.localizedDescription)")

}

使用 Swift 4 解码简单根级别的 JSON 值非常简单。我们只需要创建一个与 JSON 数据结构相匹配的 Swift 对象,并使用 JSONDecoder 对象进行解码。通过这种方式,我们可以轻松地将 JSON 数据转换为 Swift 对象或结构体,并对其进行进一步的处理。

希望本文对你理解如何使用 Swift 4 解码简单根级别的 JSON 值有所帮助。通过阅读本文并尝试案例代码,你应该能够更好地理解这个过程,并将其应用到你自己的项目中。祝你编码愉快!

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号