此仓库包含一些用于 Codable
协议和数据解码的实用工具。
JSON
JSON
枚举使处理 JSON 数据变得容易。使用 String
、Int
下标和动态成员查找(“点”语法)来检索值。
if let name = json.root.array[0]?.name.string {...}
//or if let name = json["root"]["array"][0]["name"]?.string {...}
JSON
枚举使用纯 Swift JSON 序列化,基于 Swift Protobuf 实现,速度极快。符合 Codable
协议。
VDJSONDecoder
一个将 JSON 对象解码为数据类型实例的对象。与 Foundation JSONDecoder
的主要区别:
(([CodingKey], JSON) -> JSON)
闭包进行自定义 JSON 解析。VDJSONEncoder
JSONEncoder
的纯 Swift 版本。
URLQueryEncoder
和 URLQueryDecoder
用于查询字符串的编码器和解码器。
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
和 DictionaryEncoder
NSManagedDecodable
、NSManagedEncodable
和 NSManagedCodable
协议
使您的 NSManagedObject
子类符合 Codable
协议的协议。
PlainCodingKey
简单的 CodingKey
结构体。
Decodable
类型的类型反射let properties: [String: Any.Type] = Mirror.reflect(SomeType.self)
//or Mirror(SomeType.self).children
基于编写不同编码器/解码器时的类似逻辑,实现了 DecodingUnboxer
和 EncodingBoxer
协议。此仓库中的所有编码器和解码器都是用法示例。
将以下行添加到您的 Podfile
pod 'VDCodable'
并首先从 podfile 目录运行 pod update
。
创建一个 Package.swift
文件。
// 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, voidilov@gmail.com
VDCodable 在 MIT 许可证下可用。有关更多信息,请参见 LICENSE 文件。