Swift - SwiftyJSON



什么是 JSON 数据?

JSON 全称为 JavaScript 对象表示法 (JavaScript Object Notation)。它是一种轻量级且最常用的数据交换格式,易于阅读和编写。它通常用于在服务器和应用程序之间传输数据。JSON 数据通常以键值对的形式表示。例如:

{
   "name": "Monika",
   "age": 23,
   "city": "Delhi"
}

这里 name、age 和 city 是键,Monika、23 和 Delhi 分别是它们对应的值。在 Swift 中,我们可以使用 SwiftyJSON 库来处理 JSON 数据。

SwiftyJSON

SwiftyJSON 是一个非常重要且强大的 Swift 库,用于在 Swift 编程语言中处理 JSON 数据。它通常用于读取和处理 API 返回的 JSON 数据。通过提供下标语法,它简化了在 Swift 中解析和处理 JSON 数据的过程。它还提供各种数据类型。

在 SwiftyJSON 出现之前,开发人员在 Swift 中处理 JSON 数据时面临各种问题,这些问题包括:

  • 冗余语法 - 在 SwiftyJSON 库出现之前,Swift 中的 JSON 数据由 JSONSerialization 类处理,该类提供冗余语法。开发人员必须使用嵌套转换和大量的可选值解包,这使得代码更加复杂和难以阅读。

  • 类型安全 - 在处理 JSON 数据时,Swift 没有直接的方法以类型安全的方式处理可选值或嵌套结构。用户必须使用条件转换或手动检查键的存在。

  • 可读性 - 读取和提取 JSON 中的值可读性较差。Swift 没有提供简单易用的语法来处理 JSON 数据。

  • 错误处理 - 开发人员必须使用 do-catch 块手动处理错误,因为 Swift 没有提供任何直接的方法来处理 JSON 解析和提取的错误。

  • 缺乏便利性 - 在 SwiftyJSON 出现之前,开发人员必须编写更多样板代码来解析 JSON 数据,这使得解析过程更加耗时。

这些问题后来由 SwiftyJSON 库解决了。它提供了更具表达性和更直接的方法来处理 Swift 中的 JSON 数据。

如何使用 SwiftyJSON?

要在你的项目中使用 SwiftyJSON 库,你必须按照以下步骤操作:

步骤 1 - 安装 SwiftyJSON。

要安装 SwiftyJSON,你可以使用 CocoaPods 或 Swift Package Manager。这里我们将使用 Swift Package Manager。打开 Xcode 项目 → 转到 文件 → Swift 包 → 添加包依赖项,然后输入以下 SwiftyJSON GitHub 仓库 URL:

https://github.com/SwiftyJSON/SwiftyJSON.git

现在按照提示添加包。

步骤 2 - 现在,要使用 SwiftyJSON,请使用 import 关键字在代码顶部导入该库。

import SwiftyJSON

创建 JSON 对象:SwiftyJSON 提供以下初始化器来创建 JSON 对象。

let object = JSON(data: dataObject)
Or 
let obj = JSON(jsonObj) 

访问数据 - 你可以使用下标来访问 JSON 数据。

// Getting string from JSON dictionary
let stdName = json[“name”].stringValue

// Getting int from JSON array
let value = json[1].int=

迭代数组或字典 - SwiftyJSON 支持 for-in 循环来迭代数组或字典的元素。

// For array
for(index, element):(String, JSON) in json{
   Write something
}

// For dictionary
for(key, element):(String, JSON) in json{
   Write something
}

示例

import SwiftyJSON

// JSON string
let inputJsonString = """ {
   "name": "Mohan",
   "age": 40,
   "branch": "CSE"
}"""

if let jsonObj = inputJsonString.data(using: .utf8) {
   let x = try? JSON(data: jsonObj)

   // Accessing values using SwiftyJSON subscript syntax
   let name = x?["name"].stringValue
   let age = x?["age"].intValue
   let branch = x?["branch"].stringValue
   
   // Perform operations 
   print("Name: \(name ?? "N/A")")
   print("Age: \(age ?? 0)")
   print("Branch: \(branch ?? "N/A")")
}

输出

此代码可在 Xcode 上运行。它不能在在线 Swift 编译器上运行。

Name: Mohan
Age: 40
Branch: CSE
广告