跳到正文

JSON ⇄ TOML 互转

JSON ⇄ TOML

在 JSON 和 TOML 之间转换,把嵌套对象映射成表头。

同一个转换器的 JSON ⇄ TOML 这一半,用在 `Cargo.toml`、`pyproject.toml` 或 `netlify.toml` 需要变成脚本能读的东西的时候——或者反过来。TOML 对值能是什么比 JSON 严格,这些差异会以警告的形式出现,而不是意外。

🔒 完全在你的浏览器里运行jsontomlconvert
输入格式
正按 YAML 读取。
输出格式

输入

拖入 .yaml、.json 或 .toml 文件

在这个标签页里读取,不上传。

JSON 输出

是在这里写的,不是从 npm 装的,所以支持的子集是挑出来的而不是继承来的。凡是这张清单上的东西,都会点名拒绝,而不是读错。

怎么用

  1. 粘贴 TOML,或者 JSON

    检测很容易分辨两者——`[section]` 表头和裸键没有歧义——但想确认时可以用「来源」选择器。

  2. 把目标设为 TOML 或 JSON

    转到 TOML 时,只要形状允许,表就输出为 `[section]` 表头而不是内联表,手工编辑的配置文件就是这个样子。

  3. 检查 TOML 装不下的东西

    null 会被丢掉,从 TOML 出来的日期时间会变成字符串,因为 JSON 没有日期类型。两者发生时都会列在警告里。

常见问题

为什么我的日期变成了字符串?

TOML 有一等的带时区偏移的日期时间、本地日期和本地时间;JSON 一个都没有。把文本原样带过去是唯一看起来无损的选择,而转回 TOML 时会得到一个带引号的字符串,而不是原来的日期字面量。

能转换混合类型的数组吗?

转到 JSON,能。转到 TOML 时数组原样输出;TOML 1.0 允许异构数组,但现实中不少 TOML 读取器——以及 TOML 0.5——不允许,所以提交之前混合数组值得再看一眼。

能查出重复的键吗?

能——一个键定义两次,或一个表重复定义,在 TOML 里是错误,这里会当作错误报出来,而不是像宽松的读取器那样悄悄取最后一个值。

可以从这些接进来

接下来

这些工具吃得下当前工具的产出,结果可以直接送过去。