[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-6960":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":16,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":19,"topics":21,"createdAt":10,"pushedAt":10,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":16,"starSnapshotCount":16,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},6960,"Argo","thoughtbot\u002FArgo","thoughtbot","Functional JSON parsing library for Swift","https:\u002F\u002Fthoughtbot.com",null,"Swift",3475,193,89,9,0,58.86,"MIT License",false,"main",[],"2026-06-12 04:00:31","\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fthoughtbot\u002FArgo\u002Fmaster\u002Fweb\u002FLogo.png\" width=\"250\" \u002F>\n\n# Argo [![Carthage compatible](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCarthage-compatible-4BC51D.svg?style=flat)](https:\u002F\u002Fgithub.com\u002FCarthage\u002FCarthage) [![Reviewed by Hound](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReviewed_by-Hound-8E64B0.svg)](https:\u002F\u002Fhoundci.com)\n\nArgo is a library that lets you extract models from JSON or similar structures in\na way that's concise, type-safe, and easy to extend. Using Argo, you won't need\nto write validation code to ensure that incoming data is of the right type, or\nto make sure required data fields aren't turning up empty. Argo uses Swift's\nexpressive type system to do that for you, and reports back explicit failure\nstates in case it doesn't find what you've told it to expect.\n\n_Argo_ is the Greek word for _swift_ and the name of the ship used by Jason, son\nof Aeson, of the Argonauts. Aeson is the JSON parsing library in Haskell that\ninspired Argo, much like Aeson inspired his son Jason.\n\n## Version Compatibility\n\nNote that we're aggressive about pushing `master` forward along with new\nversions of Swift. Therefore, we highly recommend against pointing at `master`,\nand instead using [one of the releases we've provided][releases].\n\nHere is the current Swift compatibility breakdown:\n\n| Swift Version | Argo Version |\n| ------------- | ------------ |\n| 4.X           | master       |\n| 3.X           | 4.X          |\n| 2.2, 2.3      | 3.X          |\n| 2.0, 2.1      | 2.X          |\n| 1.2 - 2.0     | 1.X          |\n| 1.1           | 0.3.X        |\n\n[releases]: https:\u002F\u002Fgithub.com\u002Fthoughtbot\u002FArgo\u002Freleases\n\n## Installation\n\n### [Carthage]\n\n[Carthage]: https:\u002F\u002Fgithub.com\u002FCarthage\u002FCarthage\n\nAdd the following to your Cartfile:\n\n```\ngithub \"thoughtbot\u002FArgo\"\n```\n\nThen run `carthage update`.\n\nFollow the current instructions in [Carthage's README][carthage-installation]\nfor up to date installation instructions.\n\nNote that if you are using newer versions of Argo, you will need to link both\n`Argo.framework` and `Runes.framework` into your app.\n\n[carthage-installation]: https:\u002F\u002Fgithub.com\u002FCarthage\u002FCarthage#adding-frameworks-to-an-application\n\n### [CocoaPods]\n\n[CocoaPods]: http:\u002F\u002Fcocoapods.org\n\nAdd the following to your [Podfile](http:\u002F\u002Fguides.cocoapods.org\u002Fusing\u002Fthe-podfile.html):\n\n```ruby\npod 'Argo'\n```\n\nYou will also need to make sure you're opting into using frameworks:\n\n```ruby\nuse_frameworks!\n```\n\nThen run `pod install` with CocoaPods 0.36 or newer.\n\n### Git Submodules\n\nI guess you could do it this way if that's your thing.\n\nAdd this repo as a submodule, and add the project file to your workspace. You\ncan then link against `Argo.framework` for your application target.\n\nYou will need to do the same for [Runes] if you are using newer versions of\nArgo.\n\n[Runes]: https:\u002F\u002Fgithub.com\u002Fthoughtbot\u002FRunes\n\n## Usage tl;dr:\n\nPlease note: the example below requires an additional, external module named\n[Curry](https:\u002F\u002Fgithub.com\u002Fthoughtbot\u002FCurry) which lets us use the `curry`\nfunction to curry `User.init`.\n\nIt also imports [Runes], which is a dependency of Argo in newer versions. If\nyou are using an older version of Argo, you might not need that import.\n\n```swift\nimport Argo\nimport Curry\nimport Runes\n\nstruct User {\n  let id: Int\n  let name: String\n  let email: String?\n  let role: Role\n  let companyName: String\n  let friends: [User]\n}\n\nextension User: Decodable {\n  static func decode(_ json: JSON) -> Decoded\u003CUser> {\n    return curry(User.init)\n      \u003C^> json \u003C| \"id\"\n      \u003C*> json \u003C| \"name\"\n      \u003C*> json \u003C|? \"email\" \u002F\u002F Use ? for parsing optional values\n      \u003C*> json \u003C| \"role\" \u002F\u002F Custom types that also conform to Decodable just work\n      \u003C*> json \u003C| [\"company\", \"name\"] \u002F\u002F Parse nested objects\n      \u003C*> json \u003C|| \"friends\" \u002F\u002F parse arrays of objects\n  }\n}\n\n\u002F\u002F Wherever you receive JSON data:\n\nlet json: Any? = try? NSJSONSerialization.JSONObjectWithData(data, options: [])\n\nif let j: Any = json {\n  let user: User? = decode(j)\n}\n```\n\nFor more information, see the [Documentation](Documentation\u002F)\n\n## Contributing\n\nSee the [CONTRIBUTING] document. Thank you, [contributors]!\n\n[CONTRIBUTING]: CONTRIBUTING.md\n[contributors]: https:\u002F\u002Fgithub.com\u002Fthoughtbot\u002FArgo\u002Fgraphs\u002Fcontributors\n\n## License\n\nArgo is Copyright (c) 2015 thoughtbot, inc. It is free software, and may be\nredistributed under the terms specified in the [LICENSE] file.\n\n[LICENSE]: \u002FLICENSE\n\n## About\n\n![thoughtbot](http:\u002F\u002Fpresskit.thoughtbot.com\u002Fimages\u002Fthoughtbot-logo-for-readmes.svg)\n\nArgo is maintained and funded by thoughtbot, inc. The names and logos for\nthoughtbot are trademarks of thoughtbot, inc.\n\nWe love open source software! See [our other projects][community] or look at\nour product [case studies] and [hire us][hire] to help build your iOS app.\n\n[community]: https:\u002F\u002Fthoughtbot.com\u002Fcommunity?utm_source=github\n[case studies]: https:\u002F\u002Fthoughtbot.com\u002Fwork?utm_source=github\n[hire]: https:\u002F\u002Fthoughtbot.com\u002Fhire-us?utm_source=github\n\n","Argo 是一个用于 Swift 的函数式 JSON 解析库。它允许开发者以简洁、类型安全且易于扩展的方式从 JSON 或类似结构中提取模型，无需编写额外的验证代码来确保数据类型正确或检查必填字段是否为空。Argo 利用了 Swift 强大的类型系统自动完成这些任务，并在遇到不符合预期的数据时明确报告错误状态。适用于需要处理 JSON 数据解析的应用场景，特别是那些追求代码简洁性和可维护性的 iOS 或 macOS 开发项目。",2,"2026-06-11 03:09:53","top_language"]