工具
ZH

XML 转 JSON 在线转换

粘贴 XML,立即得到 JSON。属性、文本和重复元素都按简单、可预期的规则转换,还可以通过选项控制数组、值类型和命名空间前缀。

XML

JSON

隐私保护:您的数据仅在浏览器中处理,绝不会被上传。

如何把 XML 转成 JSON

  1. 粘贴 XML、把 .xml 文件拖到编辑器中,或通过 URL 加载。JSON 会随输入实时生成。
  2. 调整属性前缀和文本键名,并决定是否始终使用数组、是否转换数字和布尔值,以及是否忽略命名空间前缀。
  3. 复制 JSON,或下载为 .json 文件。

XML 与 JSON 的对应规则

XMLJSON
<name>Ada</name>"name": "Ada"
<price>9.90</price>"price": 9.90——数字原样保留
<item id="7">Pen</item>"item": {"@id": 7, "#text": "Pen"}
<tag>a</tag><tag>b</tag>"tag": ["a", "b"]
<note/>"note": null
<![CDATA[a < b]]>文本 "a < b"
<soap:Body>(开启忽略命名空间前缀时)"Body"

为什么“始终使用数组”很重要

只出现一次的元素会转换为单个值,出现两次时则会变成数组。这样一来,读取 JSON 的代码就必须同时处理这两种结构——列表有时只有一项时,这是典型的 bug 来源。勾选子元素始终使用数组,所有子元素都会转为数组:结构完全可预期,代价只是多几个方括号。

用代码把 XML 转为 JSON

常见问题

转换是无损的吗?

元素名、属性和文本都会保留,数字也会保持原有的每一位。但注释、处理指令以及子元素之间文本的位置(混合内容)无法在 JSON 中表示。

可以把 JSON 转回 XML 吗?

可以。使用我们的姊妹网站 JSON Formatter 上的 JSON 转 XML 工具即可,它采用相同的 @ 和 #text 约定。

命名空间会如何处理?

默认情况下,soap:Body 这类带前缀的名称会原样作为键名保留,xmlns 声明则作为属性出现。勾选忽略命名空间前缀后,会得到 Body 这样的简单名称,且不含这些声明。

为什么有些值是字符串而不是数字?

007 或 1,000 这样的值不是普通的十进制数字,为避免数据丢失,会保留为字符串。取消勾选转换数字和 true/false,即可让所有值都保持为字符串。