CodableJSON 3.0.0

CodableJSON 3.0.0

Guy Kogus 维护。



  • Guy Kogus

CodableJSON

CocoaPods Compatible Carthage compatible SPM compatible

Swift 中的 JSON - 应该如此。

需求

  • iOS 9.0+ / macOS 10.9+ / tvOS 9.0+ / watchOS 2.0+
  • Xcode 10.2+
  • Swift 5.0+

使用方法

在支持 Codable 的现代时代,我们很少需要手动处理 JSON 数据。尽管如此,有时我们可能无法提前知道其结构,但我们可以利用 Codable 使我们的工作更轻松。

例如,在加载 JSON 数据时

{
  "Apple": {
    "address": {
      "street": "1 Infinite Loop",
      "city": "Cupertino",
      "state": "CA",
      "zip": "95014"
    },
    "employees": 132000
  }
}

以前

您需要进行大量类型转换以获取内部值。

guard let companies = try JSONSerialization.jsonObject(with: companiesData) as? [String: Any] else { return }

if let company = companies["Apple"] as? [String: Any],
    let address = company["address"] as? [String: Any],
    let city = address["city"] as? String {
    print("Apple is in \(city)")
}

更改内部值也需要进行几次类型转换。

guard var companies = try JSONSerialization.jsonObject(with: companiesData) as? [String: Any] else { return }

if var apple = companies["Apple"] as? [String: Any],
    var address = apple["address"] as? [String: Any] {
    address["state"] = "California"
    apple["address"] = address
    companies["Apple"] = apple
}

使用 CodableJSON

由于JSON有固定的一组类型,因此无需以长形式执行所有这些类型转换。《CodableJSON》使用枚举来存储每个类型。借助一些辅助函数,访问JSON值现在要短得多,也更简单。

let companies = try JSONDecoder().decode(JSON.self, from: companiesData)

if let city = companies["Apple"]?["address"]?["city"]?.stringValue {
    print("Apple is in \(city)")
}

您甚至可以使用可变形式来更改内部值。例如,您可以更改状态为其完整名称

var companies = try JSONDecoder().decode(JSON.self, from: companiesData)

companies["Apple"]?["address"]?["state"] = "California"

安装

CocoaPods

要使用CocoaPods将CodableJSON集成到您的Xcode项目中,请在您的Podfile中指定它

pod 'CodableJSON'
Carthage

要使用Carthage将CodableJSON集成到您的Xcode项目中,请在您的Cartfile中指定它

github "guykogus/CodableJSON"
Swift包管理器

您可以使用< protesting="useButtoniom">The Swift Package Manager,通过向您的Package.swift文件添加适当的描述来安装CodableJSON

import PackageDescription

let package = Package(
    name: "YOUR_PROJECT_NAME",
    targets: [],
    dependencies: [
        .package(url: "https://github.com/guykogus/CodableJSON.git", from: "1.2.0")
    ]
)

接下来,将CodableJSON添加到您的目标依赖项中,如下所示

.target(
    name: "YOUR_TARGET_NAME",
    dependencies: [
        "CodableJSON",
    ]
),

然后运行swift package update

许可证

CodableJSON在MIT许可证下提供。有关更多信息,请参阅LICENSE文件。