云配置跨语言迁移
运维在 Terraform 里写 HCL 配置,新来的后端同学只认 TOML 格式的部署参数。手动改 200 行的 JSON 转 TOML,漏掉一个嵌套层级导致服务启动失败。本工具保留数组和表结构,把嵌套的 `resource.aws_instance` 直接映射成 `[resource.aws_instance]`,缩进和引号自动对齐,改完直接 `cp` 进项目根目录,不用逐行比对缩进。
开发者工具 · JSON / 数据格式
双向互转
在配置 Rust 项目的 `Cargo.toml` 时,手写 TOML 结构常因缩进或数组括号错误导致解析失败。这个工具把 JSON 粘贴进来,直接转成等价的 TOML 格式,保留嵌套层级与数据类型,也支持反向转换。转换过程全在浏览器内执行,JSON 内容不会离开本地机器。
运维在 Terraform 里写 HCL 配置,新来的后端同学只认 TOML 格式的部署参数。手动改 200 行的 JSON 转 TOML,漏掉一个嵌套层级导致服务启动失败。本工具保留数组和表结构,把嵌套的 `resource.aws_instance` 直接映射成 `[resource.aws_instance]`,缩进和引号自动对齐,改完直接 `cp` 进项目根目录,不用逐行比对缩进。
策划用 JSON 管理多语言文本,翻译外包团队只给 TOML 格式的译文包。两个文件键名顺序不同,合并时总丢字段。本工具双向互转,把 JSON 的 `{ "zh": "开始" }` 转成 TOML 的 `zh = "开始"`,再反向转回 JSON 时保持键名一致。游戏上线前最后一天,用这个把 8 个语言文件统一成 TOML 发给 QA,没出现乱码或键缺失。
数据分析师写了个爬虫,配置文件是 JSON,但调度平台 Airflow 只认 TOML 的 `[default]` 段。每次改代理 IP 和超时时间,得手动把 JSON 的 `"timeout": 30` 改成 TOML 的 `timeout = 30`,忘了改引号就报错。本工具把整个 JSON 对象转成 TOML 的 `[default]` 表,保留注释占位,改完直接 `configparser` 读取,不报 `KeyError`。
Rust 项目 `Cargo.toml` 里依赖了 `serde = "1.0"`,但 CI 日志显示最新版有 API 破坏。需要把依赖锁回 `1.0.130`,而同事给的版本清单是 JSON 格式的 `{"serde": "1.0.130"}`。本工具把 JSON 转成 TOML 的 `[dependencies]` 段,保留版本号字符串,直接替换 `Cargo.toml` 对应行,不破坏已有的 `[features]` 和 `[profile]` 配置。
CI/CD 流程里,GitHub Secrets 只能存 JSON 字符串,但自建 runner 的配置读取器只吃 TOML。每次部署前得手动把 `{"db_url":"postgres://..."}` 转成 `[database] url = "postgres://..."`,转错引号导致连接失败。本工具把 JSON 键值对转成 TOML 表,保留字符串转义,复制粘贴进 `.env.toml` 后直接 `toml-rs` 解析,不报 `invalid escape`。
| 输入 | 输出 | 说明 |
|---|---|---|
| {"name": "Tom", "age": 25, "active": true} | name = "Tom" age = 25 active = true | 常规:最基础的单层 JSON 对象,验证基本字段类型(字符串、数字、布尔)的转换正确性。 |
| {"nested": {"key1": "value1", "key2": 42}} | [nested] key1 = "value1" key2 = 42 | 常规:嵌套对象,验证 TOML 的表(table)结构生成是否正确,缩进与层级关系。 |
| {"items": [1, 2, 3]} | items = [1, 2, 3] | 常规:数组类型,验证 TOML 数组字面量格式(方括号、逗号分隔)。 |
| {} | 边界:空 JSON 对象,验证工具是否返回空字符串而非报错或输出无用内容。 | |
| {"key": null} | # null 值无法转换为 TOML,已跳过 | 边界:JSON 的 null 值在 TOML 中无对应类型,验证工具如何处理(跳过并给出注释说明)。 |
| {"a": "line1\nline2"} | a = """ line1 line2 """ | 易错:含换行符的字符串,TOML 需用多行字符串(""")表示,验证转义处理是否正确。 |
| {"key": "value with \"quotes\""} | key = "value with \"quotes\"" | 易错:字符串内包含双引号,验证转义字符(\")在 TOML 中是否被正确处理。 |
| {"deeply": {"nested": {"object": true}}} | [deeply.nested] object = true | 边界:深层嵌套(3 层以上),验证 TOML 的路径式表名([a.b.c])生成是否正确,避免层级丢失。 |
1.JSON 末尾逗号直接粘贴报错
{"a": 1, "b": 2,}{"a": 1, "b": 2}JSON 规范(RFC 7159)禁止末尾逗号,但 JavaScript 对象字面量允许。直接粘贴 JS 对象会解析失败。
2.TOML 键名用了单引号
'key' = 'value'key = "value"TOML 规范要求键名是裸字或双引号字符串,单引号是字符串值专用,不能用于键。
3.JSON 布尔值写成了小写 true/false 以外的形式
{"flag": True}{"flag": true}JSON 布尔值必须全小写 true/false,Python 的 True/False 或 JS 的 !0 都不被 JSON 解析器接受。
4.TOML 多行字符串缩进被保留
str = """
hello
world
"""str = """
hello
world
"""TOML 多行字符串(""")会保留前导空白,除非使用反斜杠行尾续行。缩进空格会变成实际内容。
5.JSON 注释被当作有效内容
{"a": 1 /* 注释 */}{"a": 1}JSON 规范不允许注释,而 TOML 支持 # 注释。带注释的 JSON 会解析失败,需先移除注释再转换。
6.TOML 浮点数写成科学记数法但格式不符
pi = 3.14e+0pi = 3.14e0TOML 规范要求科学记数法指数部分不能有 + 号,只允许 e 后跟可选负号。e+0 会导致解析错误。
7.JSON 空值 null 被误写为 None 或 undefined
{"x": None}{"x": null}JSON 空值只有 null 一种表示,Python 的 None、JavaScript 的 undefined 都不被识别。
TOML = { key = value } 其中 value 类型由 JSON 值类型决定:string → "string", number → number, boolean → true/false, null → 不输出, array → [[...]], object → {...}
keyJSON 对象键,转为 TOML 键名valueJSON 值,按类型映射为 TOML 字面量stringJSON 字符串,TOML 中加双引号numberJSON 数字,TOML 中直接输出booleanJSON 布尔值,TOML 中为 true/falsenullJSON null,TOML 中省略该键arrayJSON 数组,TOML 中为 [[]] 或内联objectJSON 对象,TOML 中为嵌套表 {}输入 JSON:{"name":"Alice","age":30,"active":true,"tags":["dev","ops"],"meta":null}。转换后 TOML:name = "Alice"\nage = 30\nactive = true\ntags = ["dev", "ops"]\n(meta 键因 null 被省略)。
不会丢。TOML 的 [[array]] 写法要求数组元素必须是同类型表格,但空对象 {} 会被转为空表格 {},在 TOML 里写成 [[array]] 下面直接跟空行。如果原 JSON 数组包含不同类型(如 [1, "a"]),TOML 不支持混用类型,转换会报错并提示第几行。建议先确认 JSON 数组元素类型一致再转。
可以。TOML 的 key 支持纯 UTF-8 字符,中文 key 在 TOML 里直接写,不需要引号包围(除非包含空格或特殊符号)。但注意:有些 TOML 解析库老版本对非 ASCII key 有 bug,建议转完后用本工具的预览区检查 key 是否被自动加了引号,如果加了说明你的 key 包含空格或点号,不是编码问题。
TOML 对值类型有严格区分。字符串必须加引号,数字、布尔值、日期不加引号。本工具自动识别 JSON 值的类型:JSON 中 "123" 是字符串,转 TOML 后带引号;123 是数字,不带引号。容易混淆的是 JSON 里 "true" 和 true:前者转成字符串 "true",后者转成布尔值 true(不加引号)。如果你发现预期是数字却加了引号,说明原 JSON 那个值被写成字符串了。
TOML 用 [table] 和 [table.subtable] 表示嵌套,最多支持 3 级以内比较清晰。超过 3 级深嵌套会变成一长串 [a.b.c.d.e],可读性很差。本工具对超过 5 级的嵌套会自动在结果上方加一行注释提示“深度建议展平”。如果后续需要人工维护 TOML 文件,建议先把 JSON 按业务逻辑拆成几个独立表再转,否则后续改一个深层字段很难找。
大概率是 TOML 里出现了 Python 不支持的浮点值。JSON 中的 NaN、Infinity 在 TOML 里没有对应写法,本工具遇到这类值会直接报错并提示“无法转换非有限浮点数”。解决办法:去原 JSON 里把 NaN 改成 null 或 0,再转。另外注意 TOML 文件必须用 UTF-8 无 BOM 编码保存,记事本另存为时选 UTF-8,不要选 UTF-8 with BOM。
全程在浏览器本地运行,不上传任何数据。本工具用 JavaScript 在内存中解析 JSON 并生成 TOML 字符串,代码里没有网络请求。可以断网后打开页面验证:先打开工具页,再断开网络,粘贴 JSON 点转换,仍然能正常出结果。适合处理包含敏感信息的配置文件。
浏览器内存有限,100MB 的 JSON 文件大概率会卡死或提示“页面无响应”。实测 Chrome 稳定处理上限约 10-20MB(取决于机器内存)。建议:大文件先按逻辑拆成多个小文件分批转;或者用本工具的“粘贴部分”功能,只复制需要转换的段落。如果必须转完整大文件,推荐用命令行工具比如 yq 或 jq 配合 toml-cli。
不能。JSON 标准本身不支持注释,所以 JSON 文件里没有注释可保留。如果你原来的 JSON 文件里用 "//" 或 "/* */" 写了注释,这些注释在 JSON 解析时会被视为非法字符,工具会直接报错。建议:转换前先用工具把 JSON 里的注释删掉(很多代码编辑器的“删除注释”插件可以一键处理),或者把注释内容写在 JSON 的某个字段值里再转。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。