一个快速的 Python 序列化与校验库,基于类型注解编解码 JSON、MessagePack、YAML 和 TOML。
- Star
- 481
- Fork
- 41
- 未关闭 Issue
- 17
- 最近提交
- 3天前
这是什么?
VYaml 是用纯 C# 编写的 YAML 1.2 实现,适用于 .NET 和 Unity。它提供直接基于 UTF-8 字节处理的底层解析器和输出器,以及可在 YAML 与自定义 C# 类型之间互相转换的高层序列化接口。通过 [YamlObject] 特性,序列化代码由源码生成器在编译期生成,运行时无需依赖反射。
该库支持通过 YAML 标签、判别键或包装键识别的多态(Union),并支持键重命名、命名规范、必填成员、忽略默认值以及 [Flags] 枚举。单独的 VYaml.JsonSchema 包可以从 C# 类型生成 JSON Schema,让编辑器为手写的 YAML 提供补全和校验。项目同时支持 Native AOT 和裁剪发布,并兼容 Unity 场景文件中非标准的序列化 YAML 格式。
核心功能
- 01基于 UTF-8 字节处理,解析和输出时内存分配少。
- 02通过源码生成实现 YAML 与 C# 类型之间的序列化和反序列化。
- 03支持接口和抽象类的多态映射,可按标签、判别键或包装键区分子类型。
- 04可从 C# 类型生成 JSON Schema,为编辑器提供补全和校验。
- 05内置 Unity 类型支持,并兼容 Native AOT 与裁剪发布。
适用场景
- 在 Unity 项目中读取和保存以 YAML 存储的游戏或配置数据。
- 在 .NET 服务或工具中读写 YAML 配置文件。
- 解析体积较大且对内存分配和速度有要求的 YAML 文件。
- 为手写的 YAML 配置提供基于 Schema 的编辑器校验。
快速上手
- 1
从 NuGet 安装 VYaml 包
dotnet add package VYaml - 2
在 Unity 中安装 NuGetForUnity,然后在 NuGet 窗口中安装 VYaml 包
使用前须知
- 主要面向 Unity,要求 Unity 2021.3 或更高版本。
- 仅大部分支持 YAML 1.2 规范。
- 尚不支持节点树表示(已列入路线图)。
- 枚举仅以简单字符串形式序列化。
收录于专题
标签
常见问题
- VYaml 是什么?
- 面向 .NET 和 Unity 的高性能、低内存分配 YAML 1.2 库,支持源码生成的序列化。 VYaml 是用纯 C# 编写的 YAML 1.2 实现,适用于 .NET 和 Unity。它提供直接基于 UTF-8 字节处理的底层解析器和输出器,以及可在 YAML 与自定义 C# 类型之间互相转换的高层序列化接口。通过 [YamlObject] 特性,序列化代码由源码生成器在编译期生成,运行时无需依赖反射。
- VYaml 可以免费使用吗?用的什么许可证?
- VYaml 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- VYaml 还在维护吗?
- 活跃维护中。VYaml 最近一次提交是在 2026年11月5日。
- VYaml 适合用来做什么?
- 在 Unity 项目中读取和保存以 YAML 存储的游戏或配置数据。 在 .NET 服务或工具中读写 YAML 配置文件。 解析体积较大且对内存分配和速度有要求的 YAML 文件。 为手写的 YAML 配置提供基于 Schema 的编辑器校验。
- VYaml 怎么安装和运行?
- 从 NuGet 安装 VYaml 包: dotnet add package VYaml 在 Unity 中安装 NuGetForUnity,然后在 NuGet 窗口中安装 VYaml 包
- 在哪里获取 VYaml?
- 源代码和安装说明在 GitHub 上:https://github.com/hadashiA/VYaml
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
4210+15 本周229PythonBSD-3-Clause维护活跃更新于 昨天
面向 C# 的高性能 MessagePack 序列化库,支持 .NET、Unity 和 Xamarin,内置 LZ4 压缩。
6809+2 本周778C#Other维护活跃更新于 昨天
面向 .NET 与 Unity 的零分配文本及结构化日志库,基于 Microsoft.Extensions.Logging 构建,直接输出 UTF8。
1789+3 本周130C#MIT维护活跃更新于 3天前
从 JSON、JSON Schema、TypeScript 和 GraphQL 查询生成多种语言的强类型模型与序列化代码。
1.4万+6 本周1195TypeScriptApache-2.0维护活跃更新于 9天前
基于编译期转换的 TypeScript 库,把纯类型定义编译为运行时校验、JSON 序列化等函数。
5962+2 本周233TypeScriptMIT维护活跃更新于 昨天