跳到正文
马克工具箱

JSON 转 TOML

把 JSON 转换成 TOML,用于 Rust 的 Cargo.toml、Python 的 pyproject.toml、Hugo 和各类应用配置。嵌套对象变成 [表],对象数组变成 [[表数组]],JSON 有误时会提示出错的行号。

在浏览器本地运行,输入的内容和文件都不会上传

JSON → TOML
输出 (TOML)

使用步骤

  1. 在左侧粘贴 JSON,或点击「载入示例」。
  2. 右侧实时生成 TOML;JSON 格式有误时,会提示出错所在的行。
  3. 复制或下载 TOML;点击「反向转换」可以把 TOML 转回 JSON。

参数说明

null 值
TOML 没有 null。值为 null 的键和数组元素会被省略,输出第一行用注释列出省略了哪些路径。
顶层不是对象
TOML 文档的顶层必须是表。如果 JSON 顶层是数组或单个值,会放到 items 键下,并在注释里说明。
表与表数组
嵌套对象输出为 [a.b] 形式的表,元素都是对象的数组输出为 [[a]] 表数组,其余数组写成行内数组。

示例

JSON:

{"server":{"host":"0.0.0.0","port":8080},"databases":[{"name":"main","url":"postgres://db:5432/app"}]}

TOML:

[server]
host = "0.0.0.0"
port = 8080

[[databases]]
name = "main"
url = "postgres://db:5432/app"

常见问题

TOML 和 JSON 有什么区别?

TOML 是为人手写的配置格式,支持注释、按节分组、日期时间类型,常用于 Cargo、pyproject、Hugo、Netlify 等。JSON 更适合程序之间传数据,不支持注释。

整数 1.0 为什么变成了 1?

JSON 在 JavaScript 中解析后不区分 1 和 1.0,都会按整数输出。需要浮点数的字段请在 TOML 里手动改成 1.0。

键的顺序会变吗?

普通键值保持 JSON 中的顺序;按 TOML 规则,[表] 和 [[表数组]] 必须写在普通键值之后,所以它们会排到后面。

数据会上传吗?

不会。解析和转换都在浏览器中完成,包含令牌、密码的配置也不会外泄。

隐私说明

本工具完全在浏览器中运行,文件和文本都在你的设备上处理,不会上传到我们的服务器。

相关工具