如果这个工具帮到了你,可以请作者喝杯咖啡 ☕
将JSON数据快速转为TOML格式,适用于配置文件迁移
请输入 JSON 数据以生成 TOML
你手头有一份JSON格式的配置文件(比如来自某个API的响应),但你想把它改成TOML格式——因为TOML更易读、支持注释,更适合长期维护的配置文件。比如:从后端接口拿到一个用户设置数据,需要保存到服务器的单文件配置中;或者你在写Rust、Python项目,它们的配置管理库偏爱TOML。我们的在线转换器能帮你一键完成这个转换,不用手动逐行改格式。
JSON(JavaScript Object Notation)是一种轻量级数据交换格式,所有键值对必须用双引号包裹,结构紧凑但不自带注释。TOML(Tom's Obvious Minimal Language)是专为配置文件设计的格式,使用表(table)和数组表(array of tables)来表达层次,支持#注释,键名可以不加引号,对人工读写更友好。简单说:JSON适合机器间传输,TOML适合人类编辑。
我们假设一个用户信息JSON:{"name": "张三", "age": 30, "active": true}。打开我们的转换器,在左侧JSON输入框中粘贴这段内容(注意外层没有方括号表示对象)。点击“转换”按钮,右侧输出框会显示:
name = "张三"
age = 30
active = true转换后的TOML每一行对应一个键值对,布尔值true被转换成小写true(TOML规范本身也用小写)。这个例子中所有字段都在顶层,TOML不需要花括号,结构一目了然。
再来一个复杂点的JSON:{"server": {"host": "127.0.0.1", "port": 8080}, "tags": ["dev", "test"]}。转换成TOML后:
[server]
host = "127.0.0.1"
port = 8080
tags = ["dev", "test"]这里的server对象变成了一个TOML表([server]),其下的键直接跟在下面;数组tags仍然保留数组语法,注意TOML数组内元素用逗号分隔且方括号在同一行。如果再嵌套一层对象数组(比如多个用户),TOML会使用[[users]]来标识。
转换后你得到的TOML文本可以直接粘贴到项目配置文件(例如config.toml)中使用。解读时注意:
- 顶层键没有表头,直接写键值对。
- 嵌套对象{"a": {"b": 1}}变成[a]表,b = 1在其下。
- 对象数组(如[{"x":1}, {"x":2}])变成[[arr]]表,每个数组元素是一个单独的表。
- 空对象、空数组会被保留(空表或空数组)。
- 重要:TOML 1.0 不支持JSON中的null值、浮点数特殊值(NaN, Infinity)、以及超大整数(超出64位有符号整数范围)。如果你在JSON中用了这些,转换器会显示“不支持”提示并跳过该字段。
| JSON语法 | TOML语法 | 示例 |
|---|---|---|
"key": value | key = value | "name": "Tom" → name = "Tom" |
{"sub": {}} | [sub] 空表 | → [sub] (空) |
[elem1, elem2] | [elem1, elem2] | 数组语法基本一致 |
[{"k":1}, {"k":2}] | [[arr]] + k = 1 等 | 对象数组 |
null | 不支持 | 会跳过或报错 |
| 注释:无 | # 注释 | 可在行尾添加 |
1.0会被转为1.0;1转成整数1。TOML区分整数和浮点数,而JSON只有Number类型。转换器会尽量保持原样,但如果是1e2这种科学计数法,TOML也支持。true/false,JSON允许大写或小写。我们的转换器一律输出小写。1979-05-27T07:32:00Z)。如果你在JSON里用ISO 8601格式字符串,转换器不会自动识别,仍会当作字符串处理。需要手动调整。[foo.bar.baz],需要注意可维护性。Q1: 转换后数据会丢失吗?
A: 大部分情况下完整保留,但TOML不支持null、NaN、Infinity和大于2^63-1的整数,这些字段会被跳过或显示警告。
Q2: 支持大JSON文件吗?
A: 在线工具受浏览器内存限制,建议文件小于2MB。超大JSON建议用本地工具处理。
Q3: 我的JSON数组里全是字符串,转换后为什么还是数组?
A: TOML当然支持字符串数组,转换后格式不变,只是把引号统一为双引号(TOML规定字符串须用双引号)。
Q4: 转换后TOML能直接用在Rust的toml库或Python的tomllib中吗?
A: 可以,我们的输出符合TOML v1.0规范,多数主流语言解析器都能正确读取。
Q5: 为什么我的JSON有注释(//)?
A: 标准JSON不支持注释,如果你是从编辑器或带注释的JSONC文件粘贴的,请先移除注释再粘贴,否则转换器会报JSON语法错误。
Q6: 这个工具会存储我的数据吗?
A: 所有转换都在浏览器本地完成,不会上传到服务器,数据不会离开你的电脑。
本转换器基于TOML v1.0规范(toml.io/en/v1.0.0)。不适用于以下场景:
- 需要保留null值的JSON(TOML无等价类型,建议改为空字符串或默认值)。
- JSON中包含注释(非标准,转换前需手动清理)。
- 超大或深度嵌套的JSON(超过10层可能影响输出可读性)。
- 精度要求极高的财务数字(TOML浮点数使用64位双精度,与JSON一致,但科学计算场景请另行校验)。
如果你发现转换结果不符合预期,请检查JSON是否严格遵循JSON格式(例如键名必须有双引号、末尾不能有逗号)。
现在你可以在上方计算器里试试自己的数字。