配置管理:JSON To TOML — Numio
把 JSON 对象转换为 TOML。嵌套对象变为 [table] 段,对象数组变为 [[array of tables]],值为 null 的键会被删除,因为 TOML 没有 null。
把 JSON 配置改写为 pyproject.toml、Cargo.toml、wrangler.toml 或 Hugo 配置语法。
适用场景
- 把 JSON 配置改写为 pyproject.toml、Cargo.toml、wrangler.toml 或 Hugo 配置语法。
- 把脚本以 JSON 生成的设置迁移到基于 TOML 的配置文件。
使用方法
- 将 JSON 对象(根节点必须是对象,不能是数组)粘贴到左侧编辑器,或用加载文件按钮打开 UTF-8 文件。
- 检查右侧的 TOML:先是标量键,然后是 [table] 和 [[array]] 段。
- 复制结果,替换配置之前先对照目标工具文档中的键。
JSON 对象
{
"title": "My App",
"port": 8080,
"debug": false,
"owner": { "name": "Ada", "since": "2024-01-05T10:00:00Z" },
"servers": [
{ "host": "a.example.com", "weight": 3 },
{ "host": "b.example.com", "weight": 1 }
],
"ports": [80, 443]
}TOML
title = "My App" port = 8_080 debug = false ports = [ 80, 443 ] [owner] name = "Ada" since = "2024-01-05T10:00:00Z" [[servers]] host = "a.example.com" weight = 3 [[servers]] host = "b.example.com" weight = 1
功能与限制
大于等于 1000 的整数会加上下划线分隔符(8080 变为 8_080)。这是合法的 TOML,解析后是同一个数字。
日期字符串仍是带引号的字符串;JSON 没有日期类型,因此不会生成 TOML 日期时间值。
值为 null 的键会被静默省略,JSON 中的 1.0 会写成整数 1。
使用 @iarna/toml 在浏览器中运行。对象与其他值混合的列表会被拒绝,因为 TOML 的表数组无法容纳它们。子表缩进两个空格,TOML 会忽略这种缩进。
FAQ
根节点可以是 JSON 数组吗?
不可以。TOML 文档必须是表,因此页面会提示 JSON 是数组,并建议用对象包起来,例如 {"items": [...]}。
null 值会怎样处理?
该键会被删除。{"a": null} 输出为空。如果目标需要该键,请改用空字符串,或明确地删除它。
为什么数字中有下划线?
序列化器会用 _ 数字分隔符格式化大整数,TOML 规范允许这种写法。任何 TOML 解析器都会把 8_080 读作 8080。