input
output
把 JSON 转成 XML,或粘贴 XML 反向转回 JSON。

JSON 与 XML 互转

粘贴 JSON 点 To XML,或者粘贴 XML 点 To JSON。转换器用一套小而明确的映射规则,让属性、文本和重复元素都能在 JSON 对象里表示出来。处理全部在浏览器中完成。

映射规则

  • 属性 —— <note id="1"> 变成 { "note": { "@id": "1" } }
  • 文本节点 —— 当元素同时带有属性或子元素时,文本存放在 #text 下。
  • 重复元素 —— 同名的兄弟元素变成一个数组。
  • 数组 —— JSON 数组的元素变成同名的重复元素。
  • 实体 —— 读取 XML 时会解码五个预定义实体和数字字符引用;输出 XML 时会转义保留字符。

这套约定很常见,但 XML 和 JSON 之间并不存在通用的无损映射。命名空间、混合内容与子节点顺序、处理指令、DTD、注释和属性 —— 这些 XML 能表达的东西,普通 JSON 对象都保不住。这个转换器最适合规整的、数据型的 XML。

选好根节点,然后检查结果

当 JSON 对象恰好只有一个合适的顶层属性时,这个属性就成为 XML 的文档元素。其他情况会被包进一个 <root> 元素;顶层数组则在它下面变成一串 <item> 元素。请确认这个形状和接收 XML 的系统对得上。

XML 读取器有意做得轻量、尽力而为。不要把"转换成功"当作 XML 良构、schema 合法、命名空间正确或能抵御恶意 XML 的证据。关键文档请用支持 XML 的库,配上正确的 XSD 或其他约定去校验。

如果 JSON 那一侧有常见的语法错误,工具会先尝试修复再转换。两个方向的细节可以看 CSV 与 XML 转 JSON 详解,也可以先用 JSON Fix 检查一遍输入。

FAQ

怎么让一个 JSON 值变成 XML 属性?

给键名加 @ 前缀,比如 "@id": "1"。当同一个对象里既有属性又有子元素时,元素的文本用 #text 表示。

转换会校验我的 XML 吗?

不会。对典型的数据型 XML 来说,它提供的是一个方便的结构化视图,但它不是严格的良构、命名空间、DTD 或 XSD 校验器。

XML 转 JSON 再转回 XML,能还原原始字节吗?

不能。格式、注释、处理指令、命名空间细节和混合内容的顺序都可能改变或丢失。请比对你真正关心的语义数据,而不是指望逐字节往返一致。