This repository includes some useful tools for Codable
protocol and data decoding.
JSON
JSON
enum makes it easy to deal with JSON data.
Use String
, Int
subscripts and dynamic member lookup ("dot" syntax) to retrieve a value:
if let name = json.root.array[0]?.name.string {...}
//or if let name = json["root"]["array"][0]["name"]?.string {...}
JSON
enum uses purely Swift JSON serialization based on Swift Protobuf implementation, which is extremely fast.
Confirms to Codable
.
VDJSONDecoder
An object that decodes instances of a data type from JSON objects.
Main differences from Foundation JSONDecoder
:
(([CodingKey], JSON) -> JSON)
closureVDJSONEncoder
Purely Swift version of JSONEncoder
.
URLQueryEncoder
and URLQueryDecoder
Encoder and decoder for query strings.
struct SomeStruct: Codable {
var title = "Query_string"
let number = 0
}
let baseURL = URL(string: "https://base.url")!
let value = SomeStruct()
let url = try? URLQueryEncoder().encode(value, for: baseURL)
//url = "https://base.url?title=Query_string&number=0"
DictionaryDecoder
and DictionaryEncoder
NSManagedDecodable
, NSManagedEncodable
and NSManagedCodable
protocols
Protocols that make your NSManagedObject
subclasses confirm to Codable
protocol.
PlainCodingKey
Simple CodingKey
struct.
Decodable
typeslet properties: [String: Any.Type] = Mirror.reflect(SomeType.self)
//or Mirror(SomeType.self).children
Based on similar logic when writing different encoders/decoders DecodingUnboxer
and EncodingBoxer
protocols were implemented.
Examples of usage are all encoders in decoders in this repo.
Add the following line to your Podfile:
pod 'VDCodable'
and run pod update
from the podfile directory first.
Create a Package.swift
file.
// swift-tools-version:5.0
import PackageDescription
let package = Package(
name: "SomeProject",
dependencies: [
.package(url: "https://github.com/dankinsoid/VDCodable.git", from: "2.13.0")
],
targets: [
.target(name: "SomeProject", dependencies: ["VDCodable"])
]
)
$ swift build
Voidilov, [email protected]
VDCodable is available under the MIT license. See the LICENSE file for more info.
link |
Stars: 1 |
Last commit: 17 weeks ago |
Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics