flight-school/anycodable
Type-erased wrappers for `Encodable`, `Decodable`, and `Codable` values.
Installation
Swift Package Manager
Add the AnyCodable package to your target dependencies in Package.swift:
import PackageDescription
let package = Package(
name: "YourProject",
dependencies: [
.package(
url: "https://github.com/Flight-School/AnyCodable",
from: "0.6.0"
),
]
)Then run the swift build command to build your project.
CocoaPods
You can install AnyCodable via CocoaPods by adding the following line to your Podfile:
pod 'AnyCodable-FlightSchool', '~> 0.6.0'Run the pod install command to download the library and integrate it into your Xcode project.
Note The module name for this library is "AnyCodable" --- that is, to use it, you add
import AnyCodableto the top of your Swift code just as you would by any other installation method. The pod is called "AnyCodable-FlightSchool" because there's an existing pod with the name "AnyCodable".
Carthage
To use AnyCodable in your Xcode project using Carthage, specify it in Cartfile:
github "Flight-School/AnyCodable" ~> 0.6.0Then run the carthage update command to build the framework, and drag the built AnyCodable.framework into your Xcode project.
Usage
AnyEncodable
import AnyCodable
let dictionary: [String: AnyEncodable] = [
"boolean": true,
"integer": 1,
"double": 3.141592653589793,
"string": "string",
"array": [1, 2, 3],
"nested": [
"a": "alpha",
"b": "bravo",
"c": "charlie"
],
"null": nil
]
let encoder = JSONEncoder()
let json = try! encoder.encode(dictionary)AnyDecodable
let json = """
{
"boolean": true,
"integer": 1,
"double": 3.141592653589793,
"string": "string",
"array": [1, 2, 3],
"nested": {
"a": "alpha",
"b": "bravo",
"c": "charlie"
},
"null": null
}
""".data(using: .utf8)!
let decoder = JSONDecoder()
let dictionary = try! decoder.decode([String: AnyDecodable].self, from: json)AnyCodable
AnyCodable can be used to wrap values for encoding and decoding.
License
MIT
Contact
Mattt (@mattt)
[build status]: https://github.com/Flight-School/AnyCodable/actions?query=workflow%3ACI [build status badge]: https://github.com/Flight-School/AnyCodable/workflows/CI/badge.svg [license]: https://opensource.org/licenses/MIT [license badge]: https://img.shields.io/cocoapods/l/AnyCodable-FlightSchool.svg [swift version]: https://swift.org/download/ [swift version badge]: https://img.shields.io/badge/swift%20version-5.1+-orange.svg [cocoapods platforms badge]: https://img.shields.io/cocoapods/p/AnyCodable-FlightSchool.svg [cocoapods]: https://cocoapods.org/pods/AnyCodable-FlightSchool [cocoapods badge]: https://img.shields.io/cocoapods/v/AnyCodable-FlightSchool.svg [carthage]: https://github.com/Carthage/Carthage [carthage badge]: https://img.shields.io/badge/Carthage-compatible-4BC51D.svg
Package Metadata
Repository: flight-school/anycodable
Default branch: master
README: README.md