TOML JSON 转换器

即时进行 TOML 与 JSON 格式互转。支持表格、数组、内联表和所有 TOML 数据类型。免费在线工具,在浏览器中处理,无需上传。

  • 在浏览器中处理
  • 数据不离开你的设备
  • 免费 · 无需注册
清空两个面板、状态和等待执行的转换。焦点在工具内时,Ctrl+L(Mac 为 ⌘+L)也会清空。
在此粘贴 TOML。停止输入 0.3 秒后,JSON 面板会更新并使用两个空格缩进。遇到 JSON 无法原样保存的值时会停止转换,状态行会指出对应字段。
复制 TOML 面板当前的全部文本,包括您编辑的内容。面板为空时无法复制。
在此粘贴 JSON 对象。停止输入 0.3 秒后,TOML 面板会更新。null 或无法原样保存的数字会停止转换。
复制 JSON 面板当前的全部文本,包括您编辑的内容。面板为空时无法复制。
示例、说明与常见问题 带实际输出的示例、与同类工具的差别,以及常见问题。

转换示例

简单表格

输入 TOML:

[database]
host = “localhost”
port = 5432
enabled = true

输出 JSON 包含嵌套的 database 对象,含 host、port 和 enabled 字段。

表格数组

TOML 表格数组(使用双方括号 [[table]] 语法)会转换为 JSON 对象数组。例如,两个 [[fruits]] 表格块转换后得到包含两个对象的 fruits 数组。

TOML 与 JSON 对比

TOML(Tom’s Obvious Minimal Language)是一种以语义明确、易于阅读著称的配置文件格式,广泛用于 Rust 项目(Cargo.toml)、Hugo 等工具。 JSON 是 API 和 Web 服务中最常用的数据交换格式。 本工具在两者之间转换,两种类型系统的差异见下文「转换时会变的地方」。

转换时会变的地方

TOML 有 JSON 没有的类型,反过来也一样。下面的输入:

# build settings
title = "x"
created = 2026-09-29T10:00:00Z
day = 2026-09-29

[server]
port = 8080

转换结果是:

{
  "title": "x",
  "created": "2026-09-29T10:00:00.000Z",
  "day": "2026-09-29",
  "server": {
    "port": 8080
  }
}
  • 注释会丢失。 JSON 没有注释。

  • 日期时间变成字符串。 带时区偏移的日期时间会补上毫秒(.000Z)。再转回 TOML 时得到的是带引号的字符串,不再是 TOML 日期。

  • 精度超过毫秒的时间会停止转 JSON。 TOML 解析器只保留到毫秒,后面的位数会被舍去(TOML 1.0 允许解析器这样做)。[build] 表里的 started = 2026-10-01T09:30:00.123456Z 得到 未转换:JSON 无法原样保存下列值:/build/started:2026-10-01T09:30:00.123456Z 的精度超过毫秒。末尾补零(如 .120000)不丢信息,照常转换。字符串和注释里的日期时间是文本,不检查。

  • inf 和 nan 会停止转 JSON。 JSON 没有无穷大和 NaN,JSON.stringify 会写成 null。下面的 TOML:

    ratio = inf
    
    [limits]
    max = nan

    得到 未转换:JSON 无法原样保存下列值:/ratio:inf 在 JSON 中没有写法(JSON.stringify 会写成 null);/limits/max:nan 在 JSON 中没有写法(JSON.stringify 会写成 null)。

  • 超出 ±(2^53 − 1) 的整数在两个方向都会停止转换。 TOML 1.0 允许 64 位整数,但 TOML 解析器不会四舍五入,而是报错 integer value cannot be represented losslessly。JSON → TOML 时 JSON.parse 会把它们四舍五入,所以工具改为列出字段;1e400 这类超出双精度范围的数字也会列出。

  • JSON 的 null 会停止转 TOML。 TOML 没有 null。下面的 JSON:

    {"user":{"id":9007199254740993,"nickname":null}}

    得到 未转换:TOML 无法原样保存下列值:/user/id:整数 9007199254740993 超出 ±(2^53 − 1),JavaScript 会把它四舍五入;/user/nickname:null,TOML 没有 null。请把大 ID 写成字符串,替换或删除 null 后再转换。

  • 转换失败时输出面板会清空,复制按钮停用,不会误复制之前的结果。

  • -0.0 在两个方向都保留负号。 JSON {"offset":-0.0} 得到 TOML 浮点数 offset = -0.0,TOML offset = -0.0 得到 "offset": -0.0(只用 JSON.stringify 会写成 0)。JSON 整数 -0 写成整数零:{"count":-0} 得到 count = 0,TOML 1.0 规定 -0、+0 与 0 是同一个整数。

FAQ

支持哪些 TOML 特性?

通过 smol-toml 库支持所有标准 TOML v1.0 特性:表格、表格数组、内联表、点分键、多行字符串、整数、浮点数、布尔值、日期时间和数组。

JSON 对象数组能转换为 TOML 吗?

可以。JSON 对象数组会转换为 TOML 的表格数组([[table.name]] 语法),基本类型数组转换为 TOML 内联数组。

JSON 中的 null 值如何处理?

TOML 没有 null 类型,所以工具不转换,并按路径列出每个 null 字段(如 /user/nickname)。替换或删除 null 后再转换。

数据会发送到服务器吗?

不会。所有转换在浏览器中运行,数据不会离开您的设备。