结构化数据转换器

在浏览器本地转换 YAML、JSON 和 TOML,支持 multi-document YAML 和 anchor 解析。

配置数据只会留在你的浏览器中。不上传、不调用 API、不经过后端。

转换工具

支持 multi-document YAML,并会先在本地解析 anchors 再进行转换。

原始内容

0 / 1,048,576 bytes

转换结果

你刚测试了结构化数据转换器 — 试试 JSON 格式化 / 验证器 →

什么是结构化数据转换器?

YAML、JSON 和 TOML 各自在不同的生态系统中成为规范,因为它们优先考虑的事情不同。JSON(ECMA-404)严格、机器友好、在网络上无所不在——REST API、GraphQL 响应、npm 的 package.jsontsconfig.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 problemNOnofalseoff 和国家代码 NO 视为布尔值 false(Kubernetes 1.16 起使用 YAML 1.2 修复此问题,但旧版解析器仍有陷阱);YAML 的隐含日期转换将 2024-01-15 转为 Date 对象——用引号包裹以保持为字符串。TOML 区分 datetime2024-01-15T10:30:00Z)、local-datetimelocal-datelocal-time 为独立的第一级类型——JSON 没有这些,在往返转换时会塌陷成字符串。转换器在输出前解析 YAML 锚点,并在 JSON 中将 TOML 的有类型日期序列化为 RFC 3339 字符串/在 YAML 中序列化为带引号的字符串。

如何使用结构化数据转换器

选择FromTo格式。粘贴源数据或从磁盘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,然后再生成输出结果。