JSON ↔ TOML Converter
JSON Input
TOML Output
技术详情
JSON TOML 转换器的工作原理
工具功能
JSON TOML 转换器可在 JSON 和 TOML(Tom's Obvious, Minimal Language)格式之间双向转换。工具解析 JSON 的嵌套对象、数组和基本类型(字符串、数字、布尔、null),将其映射为 TOML 的 section table([section])、inline table 和数组语法。反向转换时,将 TOML 的层级 section 结构、内联表和数组还原为 JSON 的嵌套对象数组结构。支持多级嵌套 section(如 [a.b.c])和 TOML 数组表([[array]])。
常见开发者使用场景
JSON TOML 转换器在工具链整合和配置文件迁移中很有用。Python 项目通常使用 TOML 作为 pyproject.toml 的配置格式,而许多 CI/CD 系统和 API 使用 JSON——转换器可以在这两种格式间打通。Rust 开发者使用它将 Cargo.toml 转换为 JSON 以便程序化处理。前端开发者可能需要将 TOML 格式的 i18n 文件转为 JSON 供 JavaScript 使用。在评估不同配置文件格式时,快速查看 TOML 中数据在 JSON 中的等效表示也是实际需求。
配合 JSON YAML 转换器 可在三种格式之间自由切换,或使用 TOML 格式化器 优化输出的 TOML 代码格式。
TOML 语法与 JSON 的映射关系
TOML 和 JSON 之间的核心映射规则:
- 根对象:JSON 顶层对象映射为 TOML 根层级,键值对直接写在文件开头
- 嵌套对象:JSON 的 {"a": {"b": 1}} 映射为 TOML 的 [a] + b = 1
- 对象数组:JSON 的 {"items": [{"name": "a"}, {"name": "b"}]} 映射为 TOML 的 [[items]] 数组表
- 日期时间:TOML 原生支持日期时间类型(如 2024-01-01T00:00:00Z),JSON 中以字符串形式表示
- 注释:TOML 支持 # 注释,JSON 不支持——JSON 转 TOML 时注释信息会丢失
常见陷阱与注意事项
- 键名约束:TOML 的键名只能包含 ASCII 字母数字、下划线和连字符,JSON 中不规范的键名可能导致转换错误。
- 深层嵌套:TOML 的 section 层级太深时(如 [a.b.c.d.e])可读性急剧下降,建议不超过 3 层嵌套。
- 类型丢失:TOML 的日期时间、浮点数特殊值(nan、inf)在 JSON 中无法表示或变为字符串,双向转换可能不完全幂等。
- 数组类型:TOML 要求同一数组内元素类型一致,JSON 无此限制,转换时可能遇到混合类型数组的处理问题。
何时使用此工具而非代码
在手动迁移配置文件、集成不同格式的构建工具、或理解 TOML 配置的含义时使用此工具。对于需要批量处理或自动化流水线的场景,推荐使用 Python 的 tomllib/tomli_w 库、JavaScript 的 @iarna/toml 或 Rust 的 toml crate,它们提供了更可靠的解析和错误恢复能力。