JSON 转 XML 转换器

将 JSON 转换为 XML 格式

加载示例

JSON 输入

XML 输出

本地运行 · 粘贴密钥安全无忧
XML 将显示在此处…

什么是 JSON 转 XML?

JSON(JavaScript Object Notation)和 XML(eXtensible Markup Language)是软件开发中最主流的两种数据交换格式。JSON 使用键值对和数组,语法紧凑;XML 则将数据包裹在开始标签和结束标签之间,并支持属性。JSON 转 XML 是将 JSON 的结构原语——对象、数组、字符串、数字、布尔值和 null——转换为格式正确的 XML 文档,保持元素层级完整对应。

XML 在众多企业系统、政府 API、SOAP 服务以及行业标准(如医疗领域的 HL7、金融领域的 FpML 和财务报告领域的 XBRL)中仍是必须使用的格式。当您的应用程序输出 JSON,而下游系统要求 XML 时,JSON 转 XML 转换器无需手动重构即可完成格式翻译。转换遵循可预期的映射规则:JSON 对象转为 XML 元素,数组项转为重复的同级元素,基本类型值转为文本节点。

目前没有任何 RFC 或 W3C 标准规定 JSON 如何映射到 XML,不同库对相同输入会产生不同输出。本工具采用最常见的约定:将整个文档包裹在可配置的根元素中,将每个 JSON 键转换为 XML 子元素,并将数组项表示为同名重复元素。当接收方系统强制要求特定 XML Schema(XSD)时,理解这些映射规则尤为重要。

为什么使用在线 JSON 转 XML 工具?

手动将 JSON 转写为 XML 既繁琐又容易出错——标签不匹配、遗漏闭合元素、嵌套错误都会导致文档无法通过 Schema 验证。转换器可以自动完成结构翻译。

在浏览器中即时转换
粘贴 JSON,毫秒内获得格式正确的 XML。无需服务器请求,无需配置 CLI,无需安装任何依赖。转换完全在设备上的 JavaScript 中运行。
🔒
敏感数据本地处理
您的 JSON 输入不会离开浏览器标签页。所有解析和 XML 生成均在客户端完成,包含 API 密钥、令牌或生产数据的载荷均可安全转换。
📋
无需账号或登录
打开页面,粘贴 JSON,复制 XML 输出即可。无需注册表单、邮箱验证,也没有使用次数限制。
🌳
自动处理嵌套结构
深层嵌套对象、混合数组和 null 值均可正确转换。工具完整保留 JSON 输入的层级结构,并在生成的 XML 树中如实呈现。

JSON 转 XML 使用场景

SOAP 服务集成
您的 REST API 返回 JSON,但合作方的 SOAP 端点要求 XML 请求体。先将 JSON 载荷转换为 XML,再封装到 SOAP 信封中发送。
企业数据交换
传统 ERP 和 CRM 系统通常只接受 XML 导入。将现代工具导出的 JSON 转换为符合预期 Schema 的 XML 数据源。
CI/CD 流水线配置
部分构建工具(Maven、Ant、MSBuild)使用 XML 配置文件。在自动化构建过程中,从 JSON 参数文件生成 XML 配置片段。
QA 测试数据准备
从 JSON 数据集生成 XML 测试夹具。快速产出有效的 XML 文档,用于测试 XML 解析器、XSLT 转换或 XPath 查询。
数据管道格式桥接
摄取 XML 的 ETL 管道可以接收来自 JSON API 的数据。在载入 XML 处理阶段之前,将中间 JSON 结果转换为 XML。
学习 XML 结构
正在学习 XML 的开发者可以粘贴熟悉的 JSON 结构,直观查看对应的 XML 表示,从而理解标签嵌套、元素层级和文档结构。

JSON 转 XML 映射规则

由于没有统一标准规范 JSON 到 XML 的转换,不同工具输出各异。下表展示了本转换器及常用库(js2xmlparser、xmlbuilder、fast-xml-parser)所采用的映射约定。数组采用重复同级元素的约定已成为主流,因为它与 XML Schema 建模集合的自然方式一致——每个元素是独立的一等公民,而非包装子元素——并且与 XPath 查询和 XSLT 转换的集成也更加简洁。

JSON TypeJSON ExampleXML Output
Object{"name": "Alice"}<name>Alice</name>
Nested object{"user": {"age": 30}}<user><age>30</age></user>
Array{"colors": ["red", "blue"]}<colors>red</colors><colors>blue</colors>
String"hello"<root>hello</root>
Number42<root>42</root>
Booleantrue<root>true</root>
Nullnull<root/>
Empty object{}<root/>
Empty array[](no child elements)

代码示例

以下是在三种环境中将 JSON 转换为 XML 的可运行代码片段。每个示例均从一个示例 JSON 对象生成格式正确的 XML。

JavaScript (Node.js)
import { create } from 'xmlbuilder2';

const json = {
  order: {
    id: 1024,
    items: [
      { sku: "A1", qty: 2 },
      { sku: "B3", qty: 1 }
    ],
    shipped: false
  }
};

const xml = create({ version: '1.0' })
  .ele(json)
  .end({ prettyPrint: true });

console.log(xml);
// → <?xml version="1.0"?>
// → <order>
// →   <id>1024</id>
// →   <items>
// →     <sku>A1</sku>
// →     <qty>2</qty>
// →   </items>
// →   <items>
// →     <sku>B3</sku>
// →     <qty>1</qty>
// →   </items>
// →   <shipped>false</shipped>
// → </order>
Python
import json
import xmltodict

data = {
    "order": {
        "id": 1024,
        "items": [
            {"sku": "A1", "qty": 2},
            {"sku": "B3", "qty": 1}
        ],
        "shipped": False
    }
}

# xmltodict.unparse expects a single root key
xml = xmltodict.unparse(data, pretty=True)
print(xml)
# → <?xml version="1.0" encoding="utf-8"?>
# → <order>
# →   <id>1024</id>
# →   <items>
# →     <sku>A1</sku>
# →     <qty>2</qty>
# →   </items>
# →   <items>
# →     <sku>B3</sku>
# →     <qty>1</qty>
# →   </items>
# →   <shipped>false</shipped>
# → </order>
Go
package main

import (
	"encoding/json"
	"encoding/xml"
	"fmt"
)

type Item struct {
	SKU string `json:"sku" xml:"sku"`
	Qty int    `json:"qty" xml:"qty"`
}

type Order struct {
	XMLName xml.Name `xml:"order"`
	ID      int      `json:"id" xml:"id"`
	Items   []Item   `json:"items" xml:"items"`
	Shipped bool     `json:"shipped" xml:"shipped"`
}

func main() {
	raw := `{"id":1024,"items":[{"sku":"A1","qty":2},{"sku":"B3","qty":1}],"shipped":false}`

	var order Order
	json.Unmarshal([]byte(raw), &order)

	out, _ := xml.MarshalIndent(order, "", "  ")
	fmt.Println(xml.Header + string(out))
	// → <?xml version="1.0" encoding="UTF-8"?>
	// → <order>
	// →   <id>1024</id>
	// →   <items>
	// →     <sku>A1</sku>
	// →     <qty>2</qty>
	// →   </items>
	// →   ...
}

常见问题

JSON 转 XML 是无损的吗?
从结构上看是的——每个 JSON 值都映射到 XML 元素或文本节点。但 XML 本身不像 JSON 那样区分数字、布尔值和字符串。JSON 中的 42 在 XML 中会变成文本内容 "42"。如果接收系统依赖 XML Schema(XSD)类型声明,可以在解析时还原原始类型;否则类型信息在转换后的文档中实际上已经丢失。
JSON 数组如何转换为 XML?
每个数组项转换为同名的 XML 同级元素。例如,JSON 数组 "colors": ["red", "blue"] 会生成两个元素:&lt;colors&gt;red&lt;/colors&gt; 和 &lt;colors&gt;blue&lt;/colors&gt;。部分转换器会将数组包裹在父元素中(如 &lt;colorsList&gt;),但重复同级元素的方式更为常见,也符合 JAXB、Jackson 和 fast-xml-parser 的约定。
null 值在转换时如何处理?
JSON 的 null 通常转换为空 XML 元素——例如,"middle_name": null 变为 &lt;middle_name/&gt;。部分库会添加 xsi:nil="true" 属性来标记显式 null,这在目标系统需要对照 XSD Schema 验证时非常有用。本转换器默认输出自闭合空元素。
可以将 XML 转回 JSON 吗?
可以,但往返转换并不总是对称的。XML 的属性、处理指令、注释、混合内容和命名空间在 JSON 中没有直接对应物。将 XML 转换为 JSON 再转回 XML,可能产生结构上有差异的文档。如需 XML 转 JSON,请使用专用的 XML 转 JSON 工具,该工具可保留属性和命名空间。
如何处理不符合 XML 元素命名规则的 JSON 键?
XML 元素名称不能以数字开头,不能包含空格,也不能包含大多数特殊字符。如果您的 JSON 中有 "2024-data" 或 "first name" 这样的键,转换器必须对其进行净化——通常是添加下划线前缀或将无效字符替换为下划线。请检查转换器输出,并在需要通过 XSD 验证时调整源 JSON 的键名。
本工具能处理的最大 JSON 体积是多少?
转换器在浏览器的 JavaScript 引擎中运行,实际上限取决于可用内存。大多数现代浏览器处理 50–100 MB 以内的 JSON 文档没有问题。对于更大的文件,建议使用流式转换器,如 Python 的 xmltodict 或命令行工具,以增量方式处理数据,而非将其全部加载到内存中。
输出的 XML 是格式正确的还是经过验证的?
输出的 XML 始终是格式正确的——标签正确嵌套,特殊字符经过转义,文档只有一个根元素。输出是否有效取决于目标 Schema(XSD 或 DTD)。格式正确是结构性保证;有效性则要求元素名称、嵌套顺序和内容类型符合特定 Schema 定义。