XML 转 JSON 工具

粘贴 XML,即可得到保留元素、属性和文本的 JSON,方便在 JavaScript 或 API 中使用。

JSON

将 XML 文档转换为 JSON

XML 和 JSON 的数据模型不同:XML 有属性、文本节点和重复元素,而 JSON 只有对象、数组和值。本工具采用紧凑且无损的映射方式:每个元素成为一个键,属性收集在 _attributes 下,文本内容存放在 _text 下,出现多次的元素会成为数组。XML 声明保留在 _declaration 下。由于不会丢弃任何信息,你可以编辑 JSON 后再用 JSON 转 XML 工具将其转回 XML。

使用方法

  1. 粘贴 XML,例如 SOAP 响应、RSS 订阅源或 Maven pom.xml。
  2. 在输出编辑器中查看 JSON;如果解析出错,会显示 XML 格式错误所在的行。
  3. 复制 JSON,或点击“交换”将其转回 XML。

常见问题

为什么 XML 中的数字被转换成了字符串?
XML 没有数据类型:元素内的所有内容都是文本。转换器将值作为字符串保存在 _text 下,避免错误推断类型,例如以 0 开头的邮政编码。
为什么同一个元素有时是对象,有时是数组?
单个元素会成为对象,而同名的重复兄弟元素会成为数组。如果你的代码需要同时处理这两种情况,请用 Array.isArray 判断,或将该值统一规范为数组。
_attributes 和 _text 是什么意思?
_attributes 以键值对形式保存元素的属性,_text 保存元素的文本内容。使用固定的名称可以避免属性与子元素发生冲突。

示例:XML 转 JSON

XML 输入

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
  <book id="bk101">
    <title>XML Developer's Guide</title>
    <price>44.95</price>
  </book>
  <book id="bk102">
    <title>Midnight Rain</title>
    <price>5.95</price>
  </book>
</catalog>

JSON 输出

{
  "_declaration": {
    "_attributes": {
      "version": "1.0",
      "encoding": "UTF-8"
    }
  },
  "catalog": {
    "book": [
      {
        "_attributes": {
          "id": "bk101"
        },
        "title": {
          "_text": "XML Developer's Guide"
        },
        "price": {
          "_text": "44.95"
        }
      },
      {
        "_attributes": {
          "id": "bk102"
        },
        "title": {
          "_text": "Midnight Rain"
        },
        "price": {
          "_text": "5.95"
        }
      }
    ]
  }
}

其他转换