Argo 5.0.0

Argo 5.0.0

测试已测试
语言语言 SwiftSwift
许可 MIT
发布最新发布2020年5月
SPM支持 SPM

Tony DiPasqualeGordon Fontenot 维护。



Argo 5.0.0

  • Gordon Fontenot, Tony DiPasquale 和 thoughtbot

Argo Carthage compatible

Argo 是一个库,让您能以简洁、类型安全和易于扩展的方式从 JSON 或类似结构中提取模型。使用 Argo,您无需编写验证代码来确保传入的数据类型正确,或确保必需的数据字段不是空的。Argo 使用 Swift 的表达式类型系统为您完成这些工作,并在未找到所需内容时报告明确失败状态。

Argo 是希腊语中 swift 的意思,也是 Aeson 的儿子 Jason 所使用的船的名字。Aeson 是 Haskell 中的 JSON 解析库,它启发了 Argo,就像 Aeson 启发了他儿子 Jason 一样。

版本兼容性

请注意,我们非常积极地推动 master 和 Swift 的新版本。因此,我们强烈建议不要指向 master,而是使用我们提供的 一个发布版本

以下是当前 Swift 兼容性的分解

Swift 版本 Argo 版本
3.X 4.X
2.2, 2.3 3.X
2.0, 2.1 2.X
1.2 - 2.0 1.X
1.1 0.3.X

安装

Carthage

请将以下内容添加到您的 Cartfile 中。

github "thoughtbot/Argo"

然后运行 carthage update

有关最新的安装说明,请遵循 Carthage 的 README 文档 中的指示。

注意:如果您正在使用更新的 Argo 版本,您需要同时将 Argo.frameworkRunes.framework 链接到您的应用中。

CocoaPods

请将以下内容添加到您的 Podfile 中。

pod 'Argo'

请确保已选择使用框架。

use_frameworks!

然后使用 CocoaPods 0.36 或更高版本运行 pod install

Git Submodules

如果你喜欢这种方式的话,可以这样操作。

将此仓库作为子模块添加,并将项目文件添加到工作区中。然后,您可以针对您的应用目标链接到 Argo.framework

如果您正在使用更新的 Argo 版本,需要以相同方式操作 Runes

使用小结 tl;dr

请注意:以下示例需要一个额外的外部模块,名为 Curry,它使我们能够使用 curry 函数 currying User.init

它还导入了 Runes,这是 Argo 新版本中的依赖项。如果您使用的是 Argo 的旧版本,可能不需要该导入。

import Argo
import Curry
import Runes

struct User {
  let id: Int
  let name: String
  let email: String?
  let role: Role
  let companyName: String
  let friends: [User]
}

extension User: Decodable {
  static func decode(_ json: JSON) -> Decoded<User> {
    return curry(User.init)
      <^> json <| "id"
      <*> json <| "name"
      <*> json <|? "email" // Use ? for parsing optional values
      <*> json <| "role" // Custom types that also conform to Decodable just work
      <*> json <| ["company", "name"] // Parse nested objects
      <*> json <|| "friends" // parse arrays of objects
  }
}

// Wherever you receive JSON data:

let json: Any? = try? NSJSONSerialization.JSONObjectWithData(data, options: [])

if let j: Any = json {
  let user: User? = decode(j)
}

有关更多信息,请参阅 文档

贡献

请参阅CONTRIBUTING文档。感谢贡献者们!

许可证

Argo版权所有 (c) 2015 thoughtbot, inc. 它是免费软件,可以根据LICENSE文件中规定的条款重新分发。

关于

thoughtbot

Argo 由 thoughtbot, inc. 维护和资助。thoughtbot 的名称和标志是 thoughtbot, inc. 的商标。

我们热爱开源软件!请参阅我们的其他项目或查看我们的产品案例研究招聘我们以帮助您构建 iOS 应用。