YAML JSON XML互转

YAML、JSON、XML三种格式任意方向互转,支持缩进设置与一键交换输入输出

输入(YAML)

181 字符

输出(JSON)

XML 转换约定

XML 没有统一的数据类型与数组表示,本工具采用下面这套约定,双向转换时请对照理解。

根节点<root>…</root>
对象键名作为标签名
数组同名标签重复出现
属性解析为 @attr 字段
混合内容文本存入 #text 字段
类型自动识别数字 / true / false / null
注意几处不可逆的地方:
  • XML 中只出现一次的重复项无法与单元素数组区分,转回 JSON 会是对象而不是长度为 1 的数组。
  • 数字形式的字符串(如版本号 1.10)在 XML→JSON 时会被识别成数字,需要保留字符串请自行加引号处理。
  • YAML 的注释、锚点展开结果、多文档分隔符 --- 只保留第一个文档,注释会丢失。
  • 标签名不能以数字开头,也不能含空格,JSON→XML 时这类键名会被替换为下划线。

YAML 常见坑

  • 缩进只能用空格,Tab 会直接报错;同一层级缩进必须完全一致。
  • yes / no / on / off 在 YAML 1.1 会被当成布尔值,本工具使用 YAML 1.2(core schema),它们是字符串;跨工具传输时建议显式写 true / false。
  • 以 0 开头的数字、: 后紧跟内容、包含 # 的值都需要加引号。
  • 冒号后必须有空格:key: value 而不是 key:value。

功能介绍

YAML JSON XML互转覆盖配置文件与接口数据最常见的三种格式,任意两种之间可直接转换。YAML解析使用js-yaml并采用YAML 1.2的JSON schema,因此yes/no/on/off按字符串处理,避免YAML 1.1中意外变成布尔值的经典坑;输出支持2或4空格缩进。XML的序列化与解析采用一套明确的约定:根节点为root,对象键名作为标签名,数组表现为同名标签重复出现,属性解析为@前缀字段,混合内容的文本存入#text字段,文本会自动识别数字、true/false、null。工具在页面上完整列出了这套约定以及三处不可逆的地方(单元素数组、数字形式的字符串、YAML注释与多文档),避免转换后出现意料之外的结构差异。解析库按需懒加载,不影响首屏。

使用说明

1. 选择输入格式与输出格式,并设置缩进空格数;2. 在左侧粘贴内容,点击"转换",右侧显示结果;3. 点击"交换输入输出"可把结果送回左侧继续反向转换,用于验证往返一致性;4. 点击"示例"载入当前输入格式的样例;5. 转换失败时错误信息会指出具体位置,YAML最常见的原因是使用了Tab缩进或冒号后缺少空格;6. 涉及XML时请先阅读页面上的"XML转换约定",尤其是数组与数字字符串的处理;7. YAML中的注释、锚点原文与多文档分隔符不会保留,只处理第一个文档。