Swift解析json三种方式

在 Swift 中解析本地 JSON 文件有多种形式,以下是其中几种常用的方式:

  1. 使用 Codable 协议:
    使用 Codable 协议是 Swift 中解析 JSON 的推荐方式。首先,你需要定义一个对应的数据模型,该模型需要符合 Codable 协议。然后使用 JSONDecoder 对象将 JSON 数据解析为对应的数据模型对象。

    示例代码:

    struct MyData: Codable {
        var name: String
        var age: Int
    }
    
    if let url = Bundle.main.url(forResource: "data", withExtension: "json") {
        do {
            let data = try Data(contentsOf: url)
            let myData = try JSONDecoder().decode(MyData.self, from: data)
            print(myData)
        } catch {
            print("Error decoding JSON: \(error)")
        }
    }
    
  2. 使用 JSONSerialization:
    通过 JSONSerialization 类可以将 JSON 数据解析为 Foundation 类型(例如字典或数组)。然后可以进一步处理这些 Foundation 类型数据。

    示例代码:

    if let url = Bundle.main.url(forResource: "data", withExtension: "json") {
        do {
            let data = try Data(contentsOf: url)
            if let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] {
                if let name = json["name"] as? String, let age = json["age"] as? Int {
                    print("Name: \(name), Age: \(age)")
                }
            }
        } catch {
            print("Error parsing JSON: \(error)")
        }
    }
    
  3. 使用 SwiftyJSON 等第三方库:
    除了使用原生的 JSON 解析方法外,你还可以使用第三方库来简化 JSON 解析过程。SwiftyJSON 是一个流行的 JSON 解析工具,可以使得解析 JSON 数据更加简单和灵活。

    示例代码:

    if let url = Bundle.main.url(forResource: "data", withExtension: "json") {
        do {
            let data = try Data(contentsOf: url)
            let json = try JSON(data: data)
            let name = json["name"].stringValue
            let age = json["age"].intValue
            print("Name: \(name), Age: \(age)")
        } catch {
            print("Error parsing JSON: \(error)")
        }
    }
    
posted @ 2024-09-25 11:18  looxy  阅读(845)  评论(0)    收藏  举报