TOML 配置转换工具

粘贴一个 TOML 文件,例如配置文件或 Cargo.toml。页面按 TOML 1.0.0 的规则读取它,将相同的数据写为 JSON;若违反某条规则,则指出出错的行。

免费 在浏览器中运行 核对于2026年11月11日星期三

完整的文件。键、表、数组和值都按规范的写法读取。不会发送或保存任何内容。

结果

JSON — 复制,或下载为 data.json。
检查 — 文档符合 TOML 1.0.0 时显示绿色。红色则指出行号以及被违反的规则。
JSON

此工具在您的浏览器中运行。您输入的内容不会发送给我们。

使用方法

  1. 将 TOML 文件粘贴到“TOML 文档”中,或保留那里已有的示例。
  2. 查看“检查”。绿色表示文件符合 TOML 1.0.0;红色则给出文件所违反的行和规则。
  3. 复制“JSON”的输出,或下载为 data.json。

转换如何进行

读取器遵循 TOML 1.0.0 的语法,并建立规范所描述的树形结构。随后,这棵树以两个空格缩进的 JSON 写出,键保持文件中的顺序,因此 JSON 的阅读方式与 TOML 相同。

  • 表及其子表变为 JSON 对象。
  • 数组变为 JSON 数组。表数组(TOML 以双方括号书写)变为由对象组成的 JSON 数组。
  • 内联表变为 JSON 对象,其键保持该行中的顺序。

JSON 无法容纳什么

  • 日期、时间或带偏移量的日期会变为其文本,例如 "1979-05-27T07:32:00-08:00"。JSON 没有日期类型,因此文本保留了偏移量和小数部分的每一位数字。
  • 无穷大或 NaN 会变为字符串 "inf"、"-inf" 或 "nan",因为 JSON 没有这类数字。
  • 没有小数部分的浮点数,例如1.0,会写为1.0;整数1则写为1。只认识一种数字的 JSON 读取器会把两者读为同一个数。

检查所依据的规则

文件一旦违反规范中的某条规则,即被拒绝。大多数错误来自以下规则:

  • 同一个键只能定义一次。裸键与同名的带引号键是同一个键。
  • 表头只定义其表一次。较长的表头只是隐含地建立过的表,之后可以再次定义;但由点号键或内联表建立的表则不能。
  • 表数组每遇到一个双方括号表头就增加一个表。静态数组(例如以空的一对方括号书写的数组)不能这样增长。
  • 整数是带符号的64位数,范围从 -9223372036854775808到9223372036854775807。

计算示例:日期、浮点数和大整数

每一行给出一行 TOML,以及工具为它写出的 JSON 值。把四行合在一起运行,即可在一个输出中看到同样的结果。

TOML 行 JSON 值
when = 1979-05-27T07:32:00-08:00 "when": "1979-05-27T07:32:00-08:00"
ratio = 1.0 "ratio": 1.0
port = 8000 "port": 8000
id = 9223372036854775807 "id": 9223372036854775807

常见问题

为什么日期在 JSON 中写成文本?

JSON 没有日期或时间类型,因此工具写出 TOML 文件中的文本。文本保留了偏移量和小数部分的每一位数字,读取 JSON 时不会丢失任何信息。

为什么1.0保持为1.0,而1保持为1?

TOML 通过小数点或指数来区分整数和浮点数,JSON 则在所写的数字中保留这一区别。JSON 读取器是否保留这一区别,取决于该读取器。

为什么工具会拒绝被定义两次的表?

TOML 1.0.0 只允许表头定义其表一次,键也只能定义一次。第二次定义是错误,会在它所在的行报告,因此 JSON 中绝不会出现与文件相矛盾的值。

注释和键的顺序会保留吗?

注释会被删除,因为 JSON 没有注释。键的顺序会保留,因为成员按文件中的顺序写出。

含有多行数组的 TOML 文件能否转换?

可以。数组可以跨越多行,并以逗号结束,这是 TOML 1.0.0 允许的,工具会把它写成一个 JSON 数组。

我粘贴的文本会被发送到什么地方吗?

不会。转换在您的浏览器中进行,您粘贴的任何内容都不会被保存或发送给我们。不过,请不要把密码或令牌粘贴到您不信任的页面中。

资料来源

数据和文字最近核对于2026年11月11日星期三。

我们使用必要的 Cookie 来运行网站。经您同意后,Google 还会使用广告 Cookie 展示个性化广告。如果您拒绝,仍会看到广告,但广告不会个性化。