此仓库包含一些用于 Codable 协议和数据解码的实用工具。
JSONJSON 枚举使处理 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 解析。VDJSONEncoderJSONEncoder 的纯 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 文件。