YAML 转 JSON 转换器
将 YAML 转换为 JSON,或将 JSON 转换为 YAML,边输入边实时转换。完全在浏览器中运行,粘贴的内容不会上传。
配置文件,随处可用
YAML 常见于 Docker Compose、Kubernetes 和 CI 配置文件中。
YAML 对人类来说更易读易改,但大多数 API 和编程语言需要的是 JSON。这个工具完全在浏览器中双向转换这两种格式。
支持哪些内容
支持块状和流式映射与序列、带引号和不带引号的标量、数字、布尔值、null,以及注释。不支持锚点/别名、多文档文件,以及多行块状标量(| / >)。
工作原理
YAML 转 JSON 使用一个为此页面编写的小型递归下降解析器。它首先去除注释(会小心处理,确保引号字符串内的 # 不会被误删),记录每一行的缩进,然后按照 YAML 定义的方式构建结构:缩进用于打开嵌套的映射,以 - 开头的行用于构建序列,其余内容作为标量处理。标量的类型判断规则与真实的 YAML 解析器一致:true/false 转为布尔值,~ 和 null 转为 null,裸数字转为数字,带引号的字符串保持为字符串,行内的 [a, b] 或 {k: v} 流式语法也能正确处理。结果通过 JSON.stringify 按你选择的缩进序列化输出。JSON 转 YAML 则是相反的过程:JSON.parse 校验输入,然后一个生成器遍历该值并写出带缩进的 YAML,对任何可能被误读为数字、布尔值或 null 的字符串加上引号。
有一个刻意的设计选择值得了解:这个解析器只把字面量 true 和 false 当作布尔值。较旧的 YAML 1.1 解析器还会把 yes、no、on、off 转换为布尔值,这正是挪威国家代码 NO 在配置文件中著名地变成 false 的原因(「挪威问题」)。在这里,它会保持看起来的样子,仍是字符串。
这是一个有意保持精简的子集解析器:不支持锚点和别名(&/*)、多文档文件,以及块状标量(| 和 >),因此使用这些特性的复杂 Kubernetes 清单文件无法正确来回转换。对于日常的配置转换来说,它能覆盖你实际会粘贴的内容。
转换在你每次按键时完全在当前标签页内完成。不会调用任何解析服务:你在输入时开发者工具的 Network 面板始终保持静默,因此包含主机名和密钥的配置文件永远不会离开你的电脑。