结构化数据转换器
在浏览器本地转换 YAML、JSON 和 TOML,支持 multi-document YAML 和 anchor 解析。
转换工具
支持 multi-document YAML,并会先在本地解析 anchors 再进行转换。
0 / 1,048,576 bytes
你刚测试了结构化数据转换器 — 试试 JSON 格式化 / 验证器 →
什么是结构化数据转换器?
YAML、JSON 和 TOML 各自在不同的生态系统中成为规范,因为它们优先考虑的事情不同。JSON(ECMA-404)严格、机器友好、在网络上无所不在——REST API、GraphQL 响应、npm 的 package.json、tsconfig.json。YAML(规格 1.2.2)人性化,有锚点、别名、多文档流和重要的缩进——Kubernetes 清单、GitHub Actions 工作流、Ansible Playbook、Docker Compose。TOML(规格 1.0.0)显式类型优先——Rust 的 Cargo.toml、Python 的 pyproject.toml。经典转换的陷阱:YAML 1.1 的Norway problem将 NO、no、false、off 和国家代码 NO 视为布尔值 false(Kubernetes 1.16 起使用 YAML 1.2 修复此问题,但旧版解析器仍有陷阱);YAML 的隐含日期转换将 2024-01-15 转为 Date 对象——用引号包裹以保持为字符串。TOML 区分 datetime(2024-01-15T10:30:00Z)、local-datetime、local-date 和 local-time 为独立的第一级类型——JSON 没有这些,在往返转换时会塌陷成字符串。转换器在输出前解析 YAML 锚点,并在 JSON 中将 TOML 的有类型日期序列化为 RFC 3339 字符串/在 YAML 中序列化为带引号的字符串。
如何使用结构化数据转换器
选择From和To格式。粘贴源数据或从磁盘Import file。结果即时出现。Swap 按钮反转 From-To 并将输出移入输入框(用于往返测试——YAML -> JSON -> YAML 应该是 idempotent 的,除了注释丢失和键顺序)。对于以 --- 分隔的多文档 YAML,转换器输出 JSON 数组(每份文档一个元素)或在反向方向连接回多文档 YAML。锚点(&name)和别名(*name)在转换前解析——输出有展开的值,而不是参考。错误面板列出解析失败的行和列,有上下文窗口:JSON 中缺少 ]、YAML 中的缩进破损,或 TOML 中未引用的特殊字符是最常见的三个问题。下载为 .json、.yaml 或 .toml——文件扩展名符合目标格式,编辑器应用正确的语法高亮。
为什么配置格式转换很重要
格式选择表明意图。JSON 用于 wire-format和需要明确解析的工具——每个 { 和 [ 确实是一件事。YAML 用于人类编写配置和交叉引用(锚点避免在服务间复制粘贴环境变量块)。TOML 用于显式类型的配置,其中不慎混淆字符串和日期是不可接受的(Cargo.toml 不会容忍 Norway problem)。迁移项目时,转换会揭示不匹配:YAML 文件若使用 YAML 1.1 解析器的 country: NO 会变成 JSON 的 country: false,悄悄破坏下游系统。TOML 日期转换为 JSON 会失去其类型——往返回 TOML 会产生字符串,破坏期望 datetime 的配置验证器。转换器通过尽可能保留所有三种格式的类型信息来解决这个问题,使输入 = 输出——除了注释(YAML 和 TOML 支持但 JSON 不支持)。
常见问题
支持 multi-document YAML 吗?
支持。如果输入包含用 --- 分隔的多个 YAML 文档,转换器会保留这个结构,并可输出为 JSON 数组或 YAML multi-doc。
为什么 multi-document YAML 不能直接转 TOML?
TOML 更适合表达单一 object 文档。如果你粘贴了多份 YAML,建议先转成 JSON,或者先合并后再导出 TOML。
YAML anchors 和 aliases 会被解析吗?
会。转换器会先在浏览器本地解析 anchors 和 aliases,然后再生成输出结果。
把这个工具放进更大的流程里
这些集合会把常见的后续工具和指南整理成同一条工作路径。
浏览相同标签
跳转到其他拥有相同工作流、格式或用途的工具。