TOML
2 个工具
ToolDeck 的 TOML 工具让你可以直接在浏览器中格式化、验证和转换 TOML 配置文件——无需安装,无需账号,数据不会上传至任何服务器。TOML 格式化工具会解析你的 TOML 输入,并以统一的缩进、规范的键排序重新序列化,同时内联显示精确定位语法问题的验证错误。TOML 转 JSON 工具将 TOML 文档转换为等效的 JSON 格式,完整保留数据类型,包括日期时间、内联表和表数组。两个工具均完全在客户端运行,因此你的配置文件——通常包含数据库凭据、API 端点和部署密钥——始终留在你的设备上。如果需要反向转换,JSON 分类下的 JSON 转 TOML 工具可处理该转换。
什么是 TOML 工具?
TOML(Tom's Obvious, Minimal Language)是一种以明确、无歧义语法为核心设计的配置文件格式。由 GitHub 联合创始人 Tom Preston-Werner 创建,TOML 于 2013 年首次发布,并于 2021 年 1 月完成 1.0 规范。该格式可无歧义地映射到哈希表:每个 TOML 文件定义一棵由键值对组成的树,通过表(由 [方括号] 标记的节)进行组织。与 YAML 不同,TOML 不依赖缩进来表示结构,从而消除了整类与空白相关的解析错误。与 JSON 不同,TOML 支持注释、原生日期/时间类型和多行字符串——这些是配置文件所需的特性,而 JSON 从未被设计为提供这些功能。
TOML 工具将读取、验证和转换 TOML 文件的机械性工作自动化。格式化工具规范缩进和键排序,使配置文件在团队中保持可读性,即便多位贡献者编辑同一文件也不例外。转换工具在 TOML 与 JSON 之间进行翻译,当某个库或 API 需要 JSON 输入而你的数据源是 TOML 配置时非常实用。验证功能可在语法错误——缺少闭合括号、重复键或无效的日期时间字面量——导致应用启动失败之前将其捕获。
这些任务在 Rust 项目(Cargo.toml 是包清单)、Python 打包(pyproject.toml 通过 PEP 518 和 PEP 621 取代 setup.py 成为标准构建配置)、Hugo 静态站点(默认使用 TOML 进行站点配置)以及将配置存储在 TOML 文件中的各类基础设施中频繁出现。TOML 规范在 toml.io 维护,所有主流编程语言均有对应的解析器。
为什么在 ToolDeck 上使用 TOML 工具?
ToolDeck 的 TOML 工具使用 JavaScript 在浏览器标签页内解析和处理所有内容。不向服务器传输任何配置数据,无需账号,页面首次加载后即可离线使用。
TOML 工具使用场景
TOML 的格式化、验证和转换需求存在于不同角色和项目类型中。Rust 开发者每天与 Cargo.toml 打交道。Python 开发者通过 pyproject.toml 配置构建和工具。DevOps 工程师管理以 TOML 格式交付的应用配置。以下场景展示了基于浏览器的 TOML 工具相比编写一次性脚本或安装 CLI 工具节省时间的情况。
TOML 数据类型参考
TOML v1.0 定义了以下数据类型。转换为 JSON 时,每种类型映射到特定的表示形式。下表涵盖每种 TOML 类型的语法、示例和转换行为。
| 类型 | 语法 | 示例 | JSON 映射 |
|---|---|---|---|
| 字符串 | "..." 或 '...' | name = "TOML" | JSON 字符串。基本字符串支持转义序列(\n、\t、\u)。字面量字符串('...')将反斜杠视为普通字符。 |
| 整数 | 十进制、0x、0o、0b | port = 8080 | JSON 数字。支持十六进制(0xDEAD)、八进制(0o755)、二进制(0b1010)及下划线分隔符(1_000)。 |
| 浮点数 | 含 . 或 e 的数字 | pi = 3.14159 | JSON 数字。支持 inf、-inf 和 nan(转换为 JSON 时映射为 null 或字符串,因为 JSON 没有 NaN 类型)。 |
| 布尔值 | true / false | enabled = true | JSON 布尔值。仅小写的 true 和 false 有效。 |
| 带时区日期时间 | RFC 3339 | 2024-01-15T09:30:00Z | JSON 字符串(ISO 8601)。包含时区偏移。JSON 没有原生日期时间类型。 |
| 本地日期时间 | 日期 T 时间 | 2024-01-15T09:30:00 | JSON 字符串。不含时区信息。适用于挂钟时间。 |
| 本地日期 | YYYY-MM-DD | 2024-01-15 | JSON 字符串。不含时间部分的日期。 |
| 本地时间 | HH:MM:SS | 09:30:00 | JSON 字符串。不含日期或时区的时间。 |
| 数组 | [值, ...] | ports = [8080, 8443] | JSON 数组。TOML v1.0 中数组可以包含异构类型,但在 v0.5 中必须是同构类型。 |
| 表 | tomlCategoryContent.r10Syntax | [database] | JSON 对象。标准表使用 [方括号]。内联表在单行中使用花括号。 |
TOML v1.0.0 规范(toml.io)是当前稳定版本。表数组使用 [[双括号]] 定义重复的表条目,映射为 JSON 对象数组。
如何选择合适的 TOML 工具
ToolDeck 提供三个处理 TOML 文件的工具:两个位于 TOML 分类,一个位于 JSON 分类用于反向转换。请根据你的任务选择合适的工具。
- 1
- 2
- 3
对于日常 TOML 工作,TOML 格式化工具可在一步内完成格式化和验证——粘贴你的 TOML,它要么产生整洁的输出,要么精确告诉你语法错误所在。当需要在 TOML 和 JSON 之间桥接时,TOML 转 JSON 工具可保留所有 TOML 数据类型,包括日期时间和嵌套表。反向转换(JSON 转 TOML)请使用 JSON 分类中的 JSON 转 TOML 工具。如果你在调试解析失败的配置,建议从 TOML 格式化工具入手:其错误信息包含行号和预期词素描述,比大多数应用层 TOML 解析器的报错更为具体。