Swift 4 Codable:将 JSON 返回字符串转换为 IntDateFloat

swiftJS

1个回答

写回答

Johnny0532

2025-08-26 22:05

+ 关注

Swift
Swift

使用 Swift 4 Codable 将 JSON 返回字符串转换为 Int/Date/Float

在开发 IOS 应用程序时,我们通常需要从服务器获取数据并将其转换为本地对象。而这些数据通常以 JSON 格式返回。在 Swift 4 中,我们可以使用 Codable 协议来轻松地将 JSON 数据转换为本地对象。然而,有时候我们需要将 JSON 返回字符串中的某些值转换为特定的数据类型,比如 Int、Date 或者 Float。本文将向大家展示如何使用 Swift 4 Codable 将 JSON 返回字符串转换为 Int/Date/Float。

转换 Int

首先,让我们看一下如何将 JSON 返回字符串中的一个属性转换为 Int 类型。

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

{

"name": "John Doe",

"age": "25",

"height": "175"

}

我们定义一个结构体来表示这个数据:

Swift

struct Person: Codable {

let name: String

let age: Int

let height: Int

private enum CodingKeys: String, CodingKey {

case name

case age

case height

}

}

在上面的代码中,我们将 age 和 height 属性的类型都设置为 Int。现在,我们可以使用 JSONDecoder 来将 JSON 数据转换为 Person 对象:

Swift

let JSonString = """

{

"name": "John Doe",

"age": "25",

"height": "175"

}

"""

let JSonData = JSonString.data(using: .utf8)!

let decoder = JSONDecoder()

let person = try decoder.decode(Person.self, from: JSonData)

在上面的代码中,我们首先将 JSON 字符串转换为 Data 对象,然后使用 JSONDecoder 的 decode 方法将其转换为 Person 对象。由于 age 和 height 的类型为 Int,所以在转换过程中,它们会自动转换为 Int 类型。

转换 Date

接下来,让我们看一下如何将 JSON 返回字符串中的一个属性转换为 Date 类型。

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

{

"title": "Article Title",

"publishedAt": "2021-08-15T10:30:00Z"

}

我们定义一个结构体来表示这个数据:

Swift

struct Article: Codable {

let title: String

let publishedAt: Date

private enum CodingKeys: String, CodingKey {

case title

case publishedAt

}

}

在上面的代码中,我们将 publishedAt 属性的类型设置为 Date。现在,我们可以使用 DateFormatter 来将 JSON 数据转换为 Article 对象:

Swift

let JSonString = """

{

"title": "Article Title",

"publishedAt": "2021-08-15T10:30:00Z"

}

"""

let JSonData = JSonString.data(using: .utf8)!

let decoder = JSONDecoder()

decoder.dateDecodingStrategy = .iso8601

let article = try decoder.decode(Article.self, from: JSonData)

在上面的代码中,我们首先将 JSON 字符串转换为 Data 对象,然后使用 JSONDecoder 的 decode 方法将其转换为 Article 对象。由于 publishedAt 的类型为 Date,所以我们需要将 JSONDecoder 的 dateDecodingStrategy 属性设置为 .iso8601,以便正确地解析日期字符串。

转换 Float

最后,让我们看一下如何将 JSON 返回字符串中的一个属性转换为 Float 类型。

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

{

"name": "Product Name",

"price": "19.99"

}

我们定义一个结构体来表示这个数据:

Swift

struct Product: Codable {

let name: String

let price: Float

private enum CodingKeys: String, CodingKey {

case name

case price

}

}

在上面的代码中,我们将 price 属性的类型设置为 Float。现在,我们可以使用 JSONDecoder 来将 JSON 数据转换为 Product 对象:

Swift

let JSonString = """

{

"name": "Product Name",

"price": "19.99"

}

"""

let JSonData = JSonString.data(using: .utf8)!

let decoder = JSONDecoder()

let product = try decoder.decode(Product.self, from: JSonData)

在上面的代码中,我们首先将 JSON 字符串转换为 Data 对象,然后使用 JSONDecoder 的 decode 方法将其转换为 Product 对象。由于 price 的类型为 Float,所以在转换过程中,它会自动转换为 Float 类型。

使用 Swift 4 Codable,我们可以轻松地将 JSON 返回字符串转换为特定的数据类型,如 Int、Date 或者 Float。通过定义符合 Codable 协议的结构体或者类,并设置属性的类型,然后使用 JSONDecoder 的 decode 方法,我们可以将 JSON 数据快速转换为本地对象。在转换过程中,对于属性类型不匹配的情况,Swift 4 Codable 会自动进行类型转换。这使得我们可以更加方便地处理服务器返回的 JSON 数据。

以上就是使用 Swift 4 Codable 将 JSON 返回字符串转换为 Int/Date/Float 的示例代码和解释。通过这些示例,希望能够帮助大家更好地理解如何使用 Codable 来处理 JSON 数据。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号