onlinetools.dev

JSON ↔ YAML ↔ TOML 转换

在 JSON、YAML、TOML 之间转换,自动识别格式

本地运行
loading…
关于此工具

在 JSON、YAML 和 TOML 之间任意方向转换。源格式随粘贴自动识别——方括号暗示 JSON,key: 冒号暗示 YAML,[表] 暗示 TOML——对有歧义的输入可手动覆盖。转换经过真正的解析,输出保证合法,而不是逐行的文本变换。

每种格式各有所长:JSON 适合 API 和机器交换,YAML 适合人工编辑的配置(Kubernetes、CI 流水线),TOML 适合类型明确的配置文件(Cargo、pyproject)。手工在它们之间搬数据会招来缩进和引号错误,而这种转换消除了它们。

转换器对格式限制保持诚实:TOML 没有顶层数组也没有 null,转换这类文档会说明原因,而不是悄悄丢数据。

常见问题

注释能在转换中幸存吗?
不能——JSON 没有注释语法,而转换经过解析后的数据结构,注释不会被携带。YAML → JSON → YAML 的往返会不可逆地丢掉注释;注释重要时请保留原文件。
为什么我 YAML 里的「no」变成了 false?
YAML 1.1 把 yes/no/on/off 当布尔值,国家代码 NO 变成 false 是著名笑话。这里的解析器遵循 YAML 1.2(只有 true/false),但为旧解析器写的文件仍可能让人意外。看起来像布尔值、数字或日期的字符串要加引号。
为什么我的 JSON 转不成 TOML?
TOML 要求顶层是表(对象)——数组或裸标量不能构成 TOML 文档——而且它没有 null。调整结构(把数组包进一个键、去掉或给 null 设默认值)就能转换。
YAML 是 JSON 的超集吗?
实践上是——YAML 1.2 几乎能解析所有 JSON 文档,这也是把 JSON 粘进 YAML 配置通常可行的原因。反过来不成立:YAML 的锚点、多行标量和标签在 JSON 里没有对应物,转换时会被展开或字符串化。
相关工具