跳到正文
马克工具箱

XML 转 JSON

把 XML 文档、订阅源或接口返回转换成 JavaScript 和现代接口能直接使用的 JSON。属性和文本都会保留,转出的 JSON 还能再转回同样的 XML。

在浏览器本地运行,输入的内容和文件都不会上传

XML → JSON
输出 (JSON)

使用步骤

  1. 粘贴 XML 或载入示例。
  2. 选择是否转换数字和布尔值。
  3. 复制或下载 JSON。

参数说明

属性
属性 id="bk101" 会变成键 "@id";与属性并存的文本放在 "#text" 中。
重复元素
同一父元素下出现多次的元素会变成 JSON 数组,只出现一次则保持对象。
转换数字和布尔值
开启后 44.95 变成数字、true 变成布尔值。关闭则所有值保持文本,00123 这样的编号不会丢掉前导零。

示例

这段 XML,包含声明和注释:

<?xml version="1.0"?>
<!-- c -->
<catalog>
  <book id="bk101" in_stock="true">
    <title>XML Guide</title>
    <price currency="USD">44.95</price>
    <tag>a</tag><tag>b</tag>
    <isbn>00123</isbn>
  </book>
</catalog>

在开启「转换数字和布尔值」时会变成这样的 JSON:

{
  "catalog": {
    "book": {
      "title": "XML Guide",
      "price": {
        "#text": 44.95,
        "@currency": "USD"
      },
      "tag": [
        "a",
        "b"
      ],
      "isbn": 123,
      "@id": "bk101",
      "@in_stock": true
    }
  }
}

属性排在子元素之后。声明和注释都不见了,tag 因为出现了两次而变成数组。关闭该选项时,44.95 保持为 “44.95”,isbn 保持为 “00123”,属性则变成文本 “true”。这个选项对属性值和元素文本都有效。

常见问题

注释和 XML 声明会怎样?

会被舍弃,JSON 中没有对应的位置。元素和属性的数据都会保留。

为什么列表有时是对象而不是数组?

XML 本身没有说明某个元素能否重复。只出现一次时无法判断它是列表,所以转成对象。

XML 格式有错怎么办?

会提示第一个错误及其行号,例如结束标签不匹配。

隐私说明

本工具完全在浏览器中运行,文件和文本都在你的设备上处理,不会上传到我们的服务器。

相关工具