TOML 工具集 — TOML 与 JSON、YAML、INI、.env 互转并格式化
一站式 TOML 工具集:TOML 与 JSON、YAML、INI、.env 互转,并提供可配置缩进的格式化器 —— 完全在浏览器中运行。
TOML Tools
Convert TOML to/from JSON, YAML, INI, .env — or just format it. Runs in your browser.
TOML(Tom’s Obvious, Minimal Language)是过去十年中赢得开发者工具生态的配置格式。Rust 的 Cargo 用 TOML 写项目清单,Python 的 pyproject.toml 是构建系统、linter 和 formatter 配置的标准位置,Go、Zig、Julia 项目也都推荐使用 TOML 作为配置文件。这个格式的设计原则 —— 一目了然、语法极简、类型显式 —— 让它成为手写配置文件的正确选择:作者是看重清晰胜过简洁的开发者。JSON 适合机器之间的数据交换,YAML 拿下了 DevOps 配置之争,但放在仓库根目录、被每位贡献者编辑的那份配置文件,TOML 才是答案。
TOML 工具集页是面向 TOML 生态的多合一工具:一个能在 TOML 与 JSON、YAML、INI、.env 之间双向转换的转换器,外加一个格式化器,可以用可配置的缩进和键排序美化已有 TOML。转换路径覆盖了开发者拿起 TOML 工具最常见的原因:把基于 JSON 的配置迁移到 Rust 项目的 TOML,把 TOML 文件转成 YAML 喂给期望 YAML 输入的 CI/CD 流水线,把 TOML 配置扁平化成 .env 注入 Docker 容器,或者把遗留项目的 INI 文件转成 TOML 以接入现代工具链。格式化器产出的 TOML 一致、对 git 友好,与官方参考解析器的 printer 输出完全一致。所有处理都在浏览器中完成。
使用方法
粘贴或拖入你的 TOML
拖入一个 .toml 文件或粘贴 TOML 内容。解析器会校验语法,并在报错时给出对应的行号。合法的 TOML 会在转换前以语法高亮的树形视图呈现。
选择目标格式
选择一种输出格式 —— JSON、YAML、INI 或 .env。转换过程会保留所有值、注释(前提是目标格式支持)以及表结构。嵌套表会按目标格式的约定,转换为嵌套对象或点号表示法的键。
或者格式化你的 TOML
切换到格式化器标签页来美化已有 TOML。可设置缩进宽度、在空格和 Tab 之间切换、按字母顺序排列键,或保留原顺序。格式化后的 TOML 会与 TOML 规范官方测试集的输出进行一致性校验。
常见问题
TOML 与 JSON、YAML 有什么区别?
TOML 由 Tom Preston-Werner(GitHub 联合创始人)于 2013 年设计,是一种配置格式 —— 比 JSON 更易于人类读写(没有花括号,键不需要引号),比 YAML 更没有歧义(没有显著空白、没有 Norway 问题)。它现在是 Rust(Cargo.toml)、Python(pyproject.toml)和 Go 项目的标准配置格式。
转换器会保留 TOML 注释吗?
YAML 和 INI 输出会保留注释(这两种格式原生支持注释)。JSON 没有注释语法,所以注释会在 JSON 输出中丢失。.env 格式支持 `#` 行内注释 —— 在结构允许的情况下,TOML 注释会映射为 .env 注释。
嵌套表在 INI、.env 这类扁平格式中如何转换?
嵌套 TOML 表会被扁平化为点号表示法的键。`[server.database]` 下的 `host = 'localhost'` 在 INI 中变成 `server.database.host = localhost`,在 .env 中变成 `SERVER_DATABASE_HOST=localhost`(大写,点号换成下划线)。表数组(`[[entry]]`)会变成带数字的键。
能从其他格式转回 TOML 吗?
可以 —— 反向转换接受 JSON、YAML、INI 和 .env 输入,并输出 TOML。输出的 TOML 遵循官方风格指南:浅层嵌套使用点号键,深层嵌套使用表头,重复出现的部分使用表数组语法。
限制说明
- 不提供 schema 校验本工具解析并转换 TOML 语法,但不会针对 schema 校验内容。如需 schema 校验,请使用 `taplo`(Rust)或 `tomllib`(Python 3.11+)配合单独的 schema 定义。
- 日期/时间类型保真TOML 原生支持 date、time、datetime-local 类型。转换为 JSON(没有 date 类型)时,这些值会变为 ISO 8601 字符串。格式信息会以文本形式保留,但类型区分会丢失。
- 大文件性能深度嵌套、超过 1 MB 的 TOML 文件在树形视图里渲染会比较慢。转换本身很快,瓶颈在视觉渲染。大文件请使用原始输出标签页。
平台说明
- macOS
- `taplo` 是 macOS 上的标准 TOML 工具集(`brew install taplo`)。本浏览器工具额外提供 taplo 原生不支持的格式转换(与 YAML、INI、.env 互转)。
- Linux
- Python 3.11+ 在标准库中自带 `tomllib`。可用 `python3 -c 'import tomllib; print(tomllib.load(open("config.toml", "rb")))'` 把 TOML 解析为 Python 字典。
- Web
- 完全在浏览器中运行。配置文件在本地解析 —— 不会上传任何配置数据。适合在不暴露给第三方 API 的前提下转换内部项目配置。