YAML在基础设施中无处不在 — Kubernetes清单、GitHub Actions工作流、Docker Compose文件、Ansible Playbook。它可读且紧凑,直到缩进变得不明确、制表符潜入一个空格应该在的地方、或你需要将数据提供给只理解JSON的工具。
手工在两者之间转换是机械但繁琐的:YAML的基于缩进的嵌套变为JSON的括号和方括号、未引用的YAML字符串需要引号、YAML的更许可的语法(未引用的布尔值、多行字符串、锚点和引用)并不总是映射干净到JSON的更严格规则。
为什么你需要两种格式
你可能在YAML中写Kubernetes清单,因为它更容易读取和版本控制,但需要JSON等价物来提供给脚本、API调用或jq管道,期望JSON输入。或者你在调试为什么CI管道的YAML配置不以你期望的方式解析,看到下面的JSON结构使实际的嵌套以一个空格敏感YAML有时不是的方式明确。
立即在格式之间转换
Bellows在其41个开发工具中包括一个YAML到JSON转换器。粘贴YAML并立即获得等价JSON结构,正确的嵌套和类型保留 — 没有手工重新格式化、没有在缩进级别上猜测。
调试Kubernetes和CI配置
当清单表现得出人意料时,看到下面的JSON结构移除任何关于YAML实际嵌套方式的歧义 — 当误放的缩进静默地改变了哪个键属于哪个父对象时有用。
将配置提供给脚本
大量的脚本和自动化工具更自然地使用JSON而不是YAML。转换一次配置文件并将JSON输出传递下游通常比教你管道中的每个脚本都直接解析YAML更简单。