MetaSerialization
MetaSerialization 是一个框架,用于简化在 Swift 标准库环境(Encodable、Decodable、Codable 等)中创建新的序列化库。它的目的是让任何人通过几乎只写真实的序列化代码来创建一个与 Swift 序列化框架协同工作的序列化库。为了实现这个目标,它包括了默认的 Encoder
和 Decoder
实现,将少量工作委托给 MetaSupplier
/ Unwrapper
的实现,但还可以扩展。然而,大多数常见用例通常不需要覆盖 MetaEncoder
或 MetaDecoder
,而应该通过简短的 MetaSupplier
/ Unwrapper
自定义实现来实现。在最极端的形式中,您可以在 2 行代码 中构建对现有框架的可编码支持。
安装
MetaSerialization 支持以下依赖项管理器
文档
可在 https://cherrywoods.github.io/swift-meta-serialization/ 或此存储库的 docs 文件夹中找到。这些文档还包括一个 简介页面,概述了 MetaSerialization 应该解决的问题,以及一个 入门指南。
您可以在本仓库的 wiki 选项卡 中找到一些额外的资源。然而,那些指南主要关于版本 1,可能对当前版本不很有帮助。
如果您对此框架有任何疑问,请随时提交问题。欢迎提出改善 MetaSerialization 或其文档的建议(只要您遵守 行为准则)。
限制性
如果不在您对 Encodable 协议的实现中直接使用 encode(to:) 函数,MetaSerialization 就无法正确地执行其工作。请使用 (Un)Keyed/SingleValueEncodingContainers 的 encode 方法。
测试
本项目针对 Foundation 的 JSONEncoder 测试以及为 MetaSerialization 设计的特定测试进行测试。所有测试均可在本仓库的 Tests 文件夹 中找到。
MetaSerialization 使用 Quick 和 Nimble 进行测试。
如果您对示例和测试不感兴趣,请查看只包含源代码的分支。
版本
Swift 版本
Swift 版本 | MetaSerialization 版本 |
---|---|
4.1.2 | 2.0.1 |
4.1 | 2.0 |
4.0 | 1.0 |
2.0
版本 2 添加了许多新功能,在必要时将编码和解码分开,为 Meta(De|En)coder
提供了更好的重写选项。然而,这导致了一个更加封闭的环境,其中并非所有内容都是可重写的,这与版本 1 相比。
1.0
版本 1 与 Foundation 的 JSONEncoder 实现非常相似。几乎一切都声明为公开。
许可
本框架采用 Apache Version 2.0 许可证,与 Swift 领取的许可证几乎相同。