在 Swift 中解析本地 JSON 文件有多种形式,以下是其中几种常用的方式:
-
使用 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)") } }
-
使用 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)") } }
-
使用 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)") } }