什么是 YAML ⇄ JSON 转换?
YAML (YAML Ain't Markup Language) 和 JSON (JavaScript Object Notation) 都是流行的数据序列化格式。YAML 以其极简的语法和极高的可读性(通过缩进表示层级)在配置文件(如 Kubernetes, Docker, GitHub Actions)中被广泛使用;而 JSON 则以其严谨的结构和广泛的编程语言支持,成为 Web API 数据交换的标准。
在开发过程中,我们经常需要在两者之间进行转换,例如将复杂的 Kubernetes 配置转为 JSON 进行 API 调用,或者将 JSON 数据转化为更易于人类维护的 YAML 配置文件。
功能特点
双向转换
支持从 YAML 到 JSON 以及从 JSON 到 YAML 的实时双向转换。
纯前端处理
所有数据处理都在您的浏览器本地完成,不会上传到任何服务器,确保隐私安全。
实时校验
在您输入的过程中实时检测语法错误,并给出直观的提示。
优雅格式化
自动对输出内容进行美化,YAML 支持多层缩进,JSON 支持标准 2 空格缩进。
常见问题 (FAQ)
1. YAML 转换时报错 "Map keys must be unique" 是什么意思?
这意味着您的 YAML 文件中在同一层级出现了重复的键(Key)。YAML 规范要求在同一个映射(Map)中,键必须是唯一的。
2. 这个工具支持 YAML 的多文档 (---) 吗?
支持。我们的转换器会尝试解析所有文档,并以 JSON 数组的形式输出,或者在从 JSON 转 YAML 时生成符合规范的多文档格式。
3. 转换后 YAML 中的注释会消失吗?
由于数据在转换过程中会先被解析为内存中的 JavaScript 对象,所以原始 YAML 中的注释将无法保留在输出结果中。
4. 为什么 JSON 转 YAML 后的缩进不是 4 个空格?
本工具默认采用标准的 2 空格缩进,这是现代开发中 YAML 的主流推荐格式(如 Kubernetes)。这有助于在多层嵌套时保持更好的视觉平衡。
5. YAML 中的布尔值 (true/false) 在 JSON 中如何处理?
YAML 的布尔值(true, false, yes, no)在转换为 JSON 时会根据规范转为标准 JSON 布尔类型。注意 YAML 1.2 规范中推荐使用小写的 true/false。
6. JSON 的双引号在 YAML 中是必须的吗?
不一定。YAML 支持多种字符串表示法。JSON 必须使用双引号,而 YAML 可以使用单引号、双引号,或者在没有特殊字符的情况下完全不带引号(Plain Style)。
7. 如何处理 YAML 中的锚点 (&) 和别名 (*)?
我们的解析器完全支持 YAML 的锚点和别名特性。在转换为 JSON 时,别名引用的数据会被自动展开并内联到对应的 JSON 节点中,因为 JSON 不原生支持引用。
8. 这个工具能处理多大的文件?
由于是纯前端处理,限制主要取决于您的浏览器可用内存。通常对于几兆(MB)级别的 YAML 或 JSON 文件,转换过程都会非常迅速且稳定。