YAML 转 TOML
把 YAML 转成 TOML(js-yaml + smol-toml):遇到 null、顶层数组、混合类型数组会给出清晰提示与替代建议,非法 YAML 直接报错,并支持按键排序与结果统计。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
校验与提示
TOML 输出
features = [ "markdown", "robots" ] [build] minify = true target = "es2022" [server] host = "127.0.0.1" port = 8080 timeout = 30
统计
61210131这个工具能做什么
- 把 YAML 写的配置(Cargo.toml 风格的构建配置、Rust / Python 项目配置)转成 TOML,省掉逐行改语法。
- 写 pyproject.toml 或 Cargo.toml 前先用 YAML 草拟结构,确认无误后再转成 TOML 粘进项目。
- 转换前会先校验 TOML 表达不了的地方:null、顶层数组、超出 64 位的整数、混合类型数组都会明确指出来,而不是生成一份有问题的文件。
- 需要稳定 diff 时勾选「按键名排序」,生成的 TOML 每次顺序一致。
示例
输入
server: host: 127.0.0.1 port: 8080 timeout: 30 features: - markdown - robots build: target: es2022 minify: true
输出
features = [ "markdown", "robots" ] [server] host = "127.0.0.1" port = 8080 timeout = 30 [build] target = "es2022" minify = true
数组键会被提到文件开头(TOML 要求简单键在表之前),嵌套对象变成 [server] / [build] 表。统计面板显示 6 个键、2 个表。
常见问题
为什么有的键在文件最前面?
TOML 规定简单键值必须出现在表之前,否则后面的键会被归到上一张表里。序列化器把 features 这种数组提到开头,正是为了满足这个规则,输出可以直接被解析。
YAML 里的 null 怎么处理?
TOML 没有 null,所以含 null 的键会作为阻断性问题列出来(路径形如 server.port),此时不会输出 TOML。把键删掉,或改成空字符串 / false 再转。
顶层是数组或纯标量的 YAML 能转吗?
不能。TOML 文档的顶层必须是一张表,所以顶层数组或裸标量会提示 not-a-map,需要自己包一层键名(例如 value: ...)。空文档或只有注释的 YAML 也会被单独提示。
混合类型的数组为什么只是警告?
TOML 1.0 允许数组里混用类型,但只认 TOML 0.5 的老解析器会报错。默认只给警告并照常输出;勾选「严格数组类型」后它会变成阻断性错误,方便提前适配老工具链。
大整数和日期怎么办?
超过 JavaScript 安全整数范围(2^53-1)的整数会提示精度已经丢失,建议在 YAML 里加引号写成字符串;超过 64 位有符号范围则是阻断性错误。日期(YAML timestamp)会写成 TOML 的日期时间或字符串,生成的 TOML 会用 smol-toml 回读自检。
关键词:yaml to tomlyamltomlconverterserializationYAML 转 TOML配置转换键排序TOML 生成