JSON 转 XML 工具

粘贴一个 JSON 对象,即可得到对应的 XML。以 @ 开头的键变为属性,#text 变为元素的文本,数组则变为同一元素的重复出现。您粘贴的内容不会离开浏览器。

免费 在浏览器中运行 核对于2026年11月10日星期二

一个对象,其中只有一个成员:该成员的名称即为根元素。

缩进方式

第一行,即 <?xml version="1.0" encoding="UTF-8"?>。

结果

XML — 可复制,或下载为 converted.xml。
元素数量 — 写出的元素数,包括根元素。
XML

此工具在您的浏览器中运行。您输入的内容不会发送给我们。

使用方法

  1. 把 JSON 粘贴到“JSON”中。它唯一的顶层成员会成为根元素。
  2. 属性用 @ 前缀表示,例如 @id;元素的文本用 #text 表示。
  3. 选择“缩进方式”;若想得到最短的 XML,请选择“不换行(压缩)”。
  4. 复制“XML”,或下载为 converted.xml。

逐条说明映射规则

XML 有元素和属性;JSON 有对象、数组和值。本映射单向地把两者联系起来。顶层是只含一个成员的对象:该成员的名称即为根元素。对象变为元素。以 @ 开头的成员变为属性;名为 #text 的成员变为元素的文本。其他成员变为同名的子元素。

数组为每一项生成一个子元素,且都使用数组的名称,因此一个书目列表写作重复的 book 元素。字符串、数字或 true、false 变为文本。null 和空对象变为空元素。空数组在 XML 中没有对应形式,因此被省略。

  • 名称必须是合法的 XML 名称:像 first name 这种带空格的键,不能用作元素名。
  • 数组中的数组会被拒绝,因为其项没有可用的元素名。
  • 数字的文本按 JavaScript 的写法输出,因此超过15或16位有效数字的数字可能丢失位数,与 JSON 读取时的情况相同。

映射无法保留的内容

XML 没有类型,因此数字12与文本 "12" 的区别在转换回去时会丢失;XML 转 JSON 的工具会把看起来像数字的文本读作数字,除非关闭其类型判断。空对象和 null 在 XML 中看起来相同;只有一项的数组转回时会变成那一项。这些是映射本身的限制,不是工具的错误。

注释和处理指令不会被写出,因为 JSON 没有地方保存它们。元素内的文本会被转义,因此 XML 中的 &、< 和 > 仍保持为文本。

示例:默认的 catalog

默认 JSON 只有一个成员 catalog。它的 @version 变为 catalog 元素的 version 属性,它的 book 数组变为两个 book 元素。每个 book 以 @id 作为 id 属性,其 title、price 和 inStock 键变为子元素。第二本书的 price 为 null,变为空元素 price。

使用两个空格缩进并写入声明时,输出共八个元素:catalog、两个 book,第一本书的三个子元素与第二本书的两个子元素。计数显示8。

常见问题

怎样在 JSON 中写属性?

给键加上 @ 前缀。成员 "@id": "1" 会在保存它的元素上变为 id="1"。属性的值必须是文本、数字、true 或 false,不能是对象或数组。

为什么我的数组变成了几个同名的元素?

XML 没有数组。数组的每一项都变为一个以数组名称命名的元素,顺序不变。这是 XML 表示重复事物(如书籍或条目)的常用方式。

为什么顶层会出现错误?

XML 需要且只能有一个根元素。JSON 必须是只含一个成员的对象,例如 {"catalog": {...}};顶层是列表或多个成员,都不能构成一个文档。

为什么带空格的键会被拒绝?

XML 的元素名不能含有空格。转换前请先改名,例如改为 first-name 或 firstName。

我的 JSON 会被发送到服务器吗?

不会。转换在您的浏览器中进行,您粘贴的内容既不会发送到我们的服务器,也不会存储在那里。

资料来源

数据和文字最近核对于2026年11月10日星期二。

我们使用必要的 Cookie 来运行网站。经您同意后,Google 还会使用广告 Cookie 展示个性化广告。如果您拒绝,仍会看到广告,但广告不会个性化。