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
廣告