JSON 到 XML

粘贴 JSON 文档后,即可获取对应的XML版本:包含您选定的根元素名称、针对数组(重复元素或包装结构)的一致处理策略、可选的XML声明以及美观的缩进格式。此功能在遗留系统要求使用XML而上游数据仍以 JSON 格式存储时尤为实用。

如何将 JSON 转换为XML

  1. 1

    粘贴 JSON

    顶层的对象或数组。您需要为根元素指定名称。

  2. 2

    为根元素命名

    XML 必须包含一个根元素。默认值为 `<root>`;建议使用具有明确含义的名称,例如 `<users>` 或 `<response>`。

  3. 3

    选择数组处理策略

    “重复元素”(每个数组项均成为同级的 `<item>`)或“包装元素”(数组置于命名的包装元素内)。

  4. 4

    复制 XML

    可选的XML声明、正确的缩进格式以及`<`、`>`、`&`和引号的实体转义值。

示例:重复元素

输入:

{ "users": [ { "name": "Alice" }, { "name": "Bob" } ] }

输出:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <users>
    <name>Alice</name>
  </users>
  <users>
    <name>Bob</name>
  </users>
</root>

示例:数组包装器

采用“在<item>中封装数组”策略的相同输入:

<root>
  <users>
    <item>
      <name>Alice</name>
    </item>
    <item>
      <name>Bob</name>
    </item>
  </users>
</root>

类型映射

JSON XML
字符串 文本内容,已进行实体转义
整数 / 十进制数 文本内容(无 XML 类型注释)
布尔值 true / false 以文本形式显示
null 空元素(<foo/>)或被省略
数组 重复元素或包装结构 + 元素
对象 包含子元素的嵌套元素

属性与元素

XML 可区分属性(<user id="1">)与子元素(<user><id>1</id></user>)。转换器默认使用子元素,它们在往返转换时不会丢失信息。若下游 XML 需要使用属性,请采用键前缀约定:

  • JSON 键 @id 会成为父元素上的 XML 属性 id="..."
  • JSON 键 #text 会作为父元素的文本内容。

这些规范源自BadgerFishParker映射标准,这两种是最常见的 JSON 到XML转换标准。

转义规则

  • < -> &lt;
  • > -> &gt;
  • & -> &amp;
  • "&quot;(在属性值中)
  • '&apos;(可选)
  • UTF -8中的字节在XML Prolog中被保留并声明。

常见错误

  • 根级 JSON 数组。 XML格式要求仅使用一个根元素。转换器会将数组封装为<root>格式(或您指定的其他名称)。
  • 数字键。 JSON {"1": "a"}是有效格式;XML元素名称不得以数字开头。转换器可为数字添加下划线前缀(如_1),或支持自定义映射规则。
  • 混合阵列。 [1, "two", { "x": true }]未获得清晰的比对结果,通常表明该 JSON 在转换前需进行归一化处理。
  • **大型文档。**XML具有冗长特性,一个10MB的 JSON 可能扩展至20-30MB。对于超大数据量,建议采用流式转换方案。

常见问题

XML规范要求必须使用单一根元素。若您的 JSON 为数组或包含多个顶级键,则转换器会将所有内容封装在一个可命名的根元素中(默认名称为<root>)。

是的。在 JSON 键中使用@前缀约定(例如"@id": 1),这些键将作为属性使用,其他键则保持子元素状态。此设置与BadgerFish映射规则一致。

有两种策略:重复的兄弟元素(每个元素均以父级键作为标签),或包含<item>元素的包装结构。请选择与目标XML模式相匹配的方案。

不会。该转换器会输出 XML 声明(<?xml version="1.0"?>),但不会生成 DOCTYPE。对于需要 DTD 或 XSD 引用的 XML,请在转换后手动添加相关引用。

相关工具

此工具还提供其他语言版本