跨格式配置:TOML To YAML — Numio
把 TOML 文档转换为 YAML。表变为嵌套映射,[[array of tables]] 变为映射列表,只在 YAML 需要时才加引号(例如 "2021" 仍是字符串)。
把 TOML 配置(Cargo、pyproject、Hugo)中的设置迁移到 CI 工作流或 Kubernetes 清单等基于 YAML 的工具。
TOML
YAML
适用场景
- 把 TOML 配置(Cargo、pyproject、Hugo)中的设置迁移到 CI 工作流或 Kubernetes 清单等基于 YAML 的工具。
- 以缩进树的形式阅读包含点号键和嵌套表的长 TOML 文件。
使用方法
- 将 TOML 文档粘贴到左侧编辑器,或用加载文件按钮打开 UTF-8 文件。
- 如果出现错误,根据提示的行号和列号查找重复的键或语法问题。
- 检查 YAML 中的日期时间和带引号的值,然后复制。
TOML
# Cargo-style manifest
[package]
name = "demo"
version = "0.1.0"
edition = "2021"
[dependencies]
serde = { version = "1.0", features = ["derive"] }
[[bin]]
name = "cli"
path = "src/main.rs"YAML
package:
name: demo
version: 0.1.0
edition: "2021"
dependencies:
serde:
version: "1.0"
features:
- derive
bin:
- name: cli
path: src/main.rs功能与限制
注释会被删除。带偏移量的日期时间会转换为 UTC(2024-01-05T10:00:00+09:00 变为 2024-01-05T01:00:00.000Z),并补上毫秒。
输出遵循 YAML 1.2,因此 yes、on 这类字符串不加引号。YAML 1.1 解析器(例如 PyYAML)可能把它们读作布尔值;如有需要请手动加引号。
09:00:00 这样的本地时间会带上毫秒(09:00:00.000);本地日期和本地日期时间不带时区。
在浏览器中运行(@iarna/toml、yaml、Prettier);inf 和 nan 变为 .inf 和 .nan。
FAQ
注释会保留吗?
不会。TOML 会先解析为数据,注释和空行都会丢失。重要的注释请手动复制过去。
[[array of tables]] 如何转换?
每个 [[bin]] 块变为 bin 下 YAML 列表中的一项,如示例所示。
为什么会出现 "Can't redefine existing key"?
同一个键或表被定义了两次,TOML 不允许这样做。错误会给出第二次定义所在的行号和列号。