TOML 至 JSON
Rust 的 Cargo.toml、Python 的 pyproject.toml、Hugo 的 config.toml:TOML 在现代配置领域无处不在,但许多工具仍然只认 JSON。把 TOML 粘贴到这里,就能得到排版整齐的 JSON:[表] 区块变成嵌套对象,[[表数组]] 区块变成对象数组,日期则按原样以字符串形式传递。这个解析器覆盖了 TOML 的日常核心用法;它真实的限制(多行值、内联表、点分隔键)在下方如实列出。
转换的工作方式
-
1
粘贴你的 TOML
把文本放进输入框,点击「转换为 JSON」。占据整行的 # 注释会被自动跳过。
-
2
表变成对象
`[server.database]` 这样的表头会变成嵌套的 JSON 对象,点号分隔的每个名称对应一层。
-
3
表数组变成数组
`[[users]]` 区块会构建一个 JSON 数组,每个区块对应一个对象。
-
4
标量值保留类型
带引号的字符串、简单十进制的整数和小数、true/false 都映射为原生 JSON 类型;日期保持为字符串,与书写时完全一致。
-
5
复制 JSON
结果使用 4 个空格缩进排版,键保持原有顺序,随时可以复制。
类型如何映射
| TOML 值 | JSON 值 | 示例 |
|---|---|---|
| 字符串(基本或字面量) | 字符串 | "hello" → "hello" |
| 整数(简单十进制) | 数字 | 42 → 42 |
| 浮点数(简单十进制) | 数字 | 3.14 → 3.14 |
| 布尔值 | 布尔值 | true → true |
| 数组(单行) | 数组 | [1, 2, 3] → [1, 2, 3] |
| 带键的表 | 对象 | [server] + port = 8080 → "server": {"port": 8080} |
| 表数组 | 对象数组 | [[users]] + name = "alice" → "users": [{"name": "alice"}] |
| 日期时间 | 字符串(按原样) | 2026-04-18T10:00:00Z → "2026-04-18T10:00:00Z" |
输出始终使用 4 个空格缩进排版,因此数组和对象会展开成多行;上表为了便于阅读把值写在一行里。键的顺序与你 TOML 中出现的顺序完全一致。
完整示例
title = "My App"
[server]
host = "localhost"
port = 8080
[[users]]
name = "alice"
admin = true
会转换为:
{
"title": "My App",
"server": {
"host": "localhost",
"port": 8080
},
"users": [
{
"name": "alice",
"admin": true
}
]
}
支持的 TOML 与真实的限制
支持:[表] 表头(包括点分隔的区块名)、[[表数组]]、单行的 key = value 键值对、带 \n、\t、\" 转义的基本字符串 "..."、字面量字符串 '...'、简单十进制的整数和小数、true/false、单行数组(允许嵌套)、占据整行的 # 注释,以及按字符串传递的日期。
不支持的部分,以及对应的做法:
- 多行字符串(
"""或''')和多行数组会让解析器报错停止。请先把值写到一行里。 - 内联表不会被展开:
point = { x = 1, y = 2 }会输出为字符串"{ x = 1, y = 2 }",而不是对象。请把它改写成独立的[point]区块。Cargo.toml 的依赖行(例如serde = { version = "1.0" })就是典型情况。 - 等号左侧的点分隔键会保持为一个扁平键:
server.host = "a"生成的键是"server.host",不会嵌套。请改用[server]表头。表头里的点分隔[section.names]则能正确嵌套。 - 值后面的注释不会被剥离:
port = 8080 # main会变成字符串"8080 # main"。注释请单独成行。 - 超出简单十进制的数字格式不会被识别:
1_000、0xFF、5e2、+99、inf和nan都会以带引号的字符串输出。请写成1000、255、500、99。 - 基本字符串中的
\uXXXX转义不会被解码。请直接粘贴真实字符。
如果要转换完整的 TOML 1.0 文档,请使用 toml2json 之类的命令行转换器,或先用 Python 的 tomllib 读取文件,再从那里输出 JSON。
适用场景
- 调试时把一段 TOML 快速查看为 JSON。
- 把简单配置值传给只接受 JSON 的 linter、脚本或资产清单工具。
- 用手写更顺手的 TOML 笔记生成 JSON 测试夹具。
- 迁移小而扁平的配置文件,Hugo 的很多
config.toml就属于这一类。
往返转换须知
- 注释永远不会保留:JSON 根本没有注释语法。
- 日期仍是字符串;下游代码需要把它们重新解析成日期对象。
- 大数:JSON 文本中的整数保留为 64 位值,但 JavaScript 一侧在超过 2^53 后会丢失精度。留意纳秒级时间戳和数字 ID。
- 键的顺序在本转换器中保持书写时的样子;其他 JSON 工具重新输出文档时可能会重排键。
反向转换
JSON → TOML 才是更难走的路,因为 JSON 拥有 TOML 没有或处理方式不同的结构(深层匿名嵌套、null)。大多数往返场景都需要在 TOML 一侧手动调整。
常见问题
不能。JSON 没有注释语法,所以占据整行的 # 注释会被直接跳过。需要注意:写在值后面的注释不会被剥离,port = 8080 # main 会变成字符串 “8080 # main”。转换前请让注释单独成行。
不。它覆盖日常核心用法:点分隔区块名的表、表数组、单行 key = value 键值对、带引号的字符串、简单十进制数字、布尔值、单行数组和整行注释。多行字符串和多行数组、内联表、点分隔键,以及 1_000 或 0xFF 这类数字格式都不支持。要处理完整规范的文档,请使用 toml2json 或 Python 的 tomllib 等命令行工具。
常见的配置文件都能即时完成转换。转换在我们的服务器上运行,因此超大文档会受请求大小限制;几兆字节级别的 TOML 更适合用命令行转换器处理。
会。这个转换器在服务器端运行:TOML 通过 HTTPS 发送到我们的服务器,在那里完成转换,并随同一响应返回。内容之后不会被保存,只记录一次匿名使用计数。请不要粘贴密码或 API 密钥等机密信息。
相关工具
ASCII 表参考
完整 ASCII 表,覆盖 0 到 127;列出每个代码的十进制、十六进制、八进制、二进制值和 HTML 数字字符引用写法,包括 NUL、LF、DEL。
HTML 字符参考
可搜索的 HTML 实体列表,含命名代码与数值代码,并支持一键复制特殊字符和符号。
键盘快捷键参考
搜索 macOS、Windows 和 Linux 上 VS Code、Chrome 以及使用 GNU Readline 的 Bash 的文档默认快捷键。
HTML到文本转换器
从标记中剔除所有HTML标签及元素,生成适用于电子邮件客户端、数据分析及索引处理的纯文本格式。
IBAN 验证工具
在本地检查 IBAN 的注册国家长度、国内结构和 MOD 97-10 校验位。不上传数据,也不表示账户真实存在。
证书解码器
粘贴一张 X.509 PEM 证书,并查看解码后的字段:主体、颁发者、序列号、签名算法、有效期及主体备用名称(SAN)。
此工具还提供其他语言版本
- TOML เป็น JSON [TH]
- TOML a JSON [ES]
- TOML na JSON [PL]
- TOMLからJSONへ [JA]
- TOML para JSON [PT]
- TOML till JSON [SV]
- TOML sang JSON [VI]
- من TOML إلى JSON [AR]
- TOML en JSON [FR]
- TOML zu JSON [DE]
- TOML ke JSON [ID]
- TOML to JSON [KO]
- TOML naar JSON [NL]
- TOML'dan JSON'a [TR]
- TOML to JSON [EN]
- TOML in JSON [IT]
- TOML в JSON [RU]