Song

使用静态类型的数据结构序列化。 Song 之于 JSON 犹如 Swift 之于 Javascript。

开始使用

先决条件

Swift 4.0

安装

添加依赖到 Package.swift

.package(url: "https://github.com/blanu/Song", from: "0.0.0")

或者直接检出

git clone https://github.com/blanu/Song
cd Song

运行测试

如果直接检出

swift test

编码和解码测试

测试覆盖了原始类型、Foundation 类型、数组、字典、结构体和类的编码和解码。

局限性

部署

您可以在应用程序中使用 Song,就像使用 JSON 编码器一样。

定义您的数据结构

结构体和类必须采用 Codable 协议。 所有字段也必须是 Codable 类型。 大多数原始类型和 Foundation 类型已经采用了这个协议。

struct ExampleStruct: Codable {
    let value: String
}

let example = ExampleStruct(value: "example string")

创建并使用编码器

let song = Song()
let result: Data = try? song.encode(ex)

使用编码后的数据

对于这个例子,我们将把它作为 UTF8 字符串打印出来。

NSLog("\(String(bytes: result!, encoding: .utf8)!)")

结果将是以下字符串

let value: ExampleStruct = ExampleStruct(value: "example string")

请注意,打印的字符串与您最初用于实例化结构体的 Swift 代码相同。 这就是 Song 的目的。 它将数据结构序列化为 Swift 代码,并将 Swift 代码解析为数据结构。

使用技术

贡献

请阅读 CONTRIBUTING.md 以了解我们的行为准则以及提交 pull 请求的流程。

版本控制

使用 SemVer 进行版本控制。 有关可用版本,请参见此存储库上的标签

作者

许可

本项目采用 GPLv3 许可 - 有关详细信息,请参阅 LICENSE.md 文件

致谢

Song 的灵感来自 Enso 以及与 William R. Cook 的对话。