关于 JSON 转 XML
尽管 JSON 已成主流,许多企业级系统(SOAP、银行接口、老旧 ERP、部分政府平台)仍以 XML 通信。本工具在浏览器本地把 JSON 转为结构良好的 XML,自动处理嵌套对象、数组到重复同名子元素的映射、以及 <、>、&、引号等字符的 XML 实体转义;顶层为数组或多键时会智能包裹单一根节点,确保输出严格合法。要注意的两个限制:一是 XML 没有数组概念,数组会被转成同名重复子元素,这正是 XML 表达列表的惯例;二是 JSON 没有属性概念,默认所有字段都转成子元素,若需要映射到 XML 属性,往往要用约定前缀(如 @)并手动调整,本工具默认以子元素输出。无论是调试 SOAP 接口、生成 Java/Android 的 XML 配置,还是把数据集导出给只支持 XML 导入的系统,都能一键完成。例如把 {"user":{"id":1}} 转成 <user><id>1</id></user> 形式的 XML,字段层级一一对应。转换后建议用解析器验证一遍是否严格合法,尤其是含特殊字符的字段;对接老旧系统时留意根节点名称与命名空间的约定,可先用样例数据试跑。
误用主要是把 JSON 的语义强行映射过去:JSON 没有「元数据与内容」的区分,因此生成器通常把全部键都当元素,若下游依赖属性表达元信息,就需要按约定在键名前缀上做映射,这不是工具能自动猜出的。另一处是重复元素的处理方向相反——XML 允许同名兄弟元素而 JSON 不允许,因此从 XML 转回 JSON 时必须约定聚合规则,反向转换才能还原。
什么时候不该用它也需要明确:如果下游只能解析 JSON,转换只是多绕一步;如果目标格式本身支持注释与人类编辑(如 YAML),转成 XML 反而更难维护;如果数据结构里包含大量同构记录,XML 的冗余标签会让体积明显膨胀。它真正合适的场景是与只认 XML 的既有系统对接,或需要利用 XML 的命名空间与模式校验能力。
转换后建议用解析器回读一次确认可用,而不是只检查文本形态。原因在于字符转义与空元素是最容易出错的地方:内容里含尖括号或与号时必须转义,否则解析失败;空对象与空数组在两种格式里的表示不同,回读能立刻暴露「看起来对但解析报错」的情况。回读一次的成本很低,却能把问题挡在上线之前。
最后一个前提是字符集声明:生成的文档应带明确编码声明,否则接收方按本地默认编码解析时,非 ASCII 内容会出现乱码;同时输出文件本身必须以该编码写入,声明与实际编码不一致比不声明更糟,因为接收方会按声明解析而得到错误结果。交付前用解析器回读一次即可同时验证这两点。
与手写映射代码相比,它的价值在「先看结构再写代码」:转换一次就能看到 XML 形态是否符合下游预期,避免写完解析代码才发现结构不对。因此它更适合作为联调阶段的验证手段,确认无误后再把映射规则固化成代码,两步走的成本远低于直接写代码再反复调试。
实现原理
转换把对象树映射成元素树:键成为元素名,标量成为文本节点。取舍在于属性与文本无法从 JSON 反推——JSON 里没有「这是元数据还是内容」的概念,因此生成器通常把全部键都当元素,或在键名约定前缀时才生成属性。同名键在 JSON 里不可能出现,因此不需要处理重复元素。
{"user":{"id":1,"name":"a"}}<user>
<id>1</id>
<name>a</name>
</user>使用方法
- 打开「JSON 转 XML」
- 选择源格式与目标格式
- 根据需要调整输出选项
- 点击「转换」按钮,结果实时显示
- 复制或导出结果
使用场景
- 对接 SOAP 服务 — 把 JSON 数据转成 SOAP 接口要求的 XML 报文体。
- 生成配置文件 — 为仍用 XML 配置的框架(如部分 Java/Android 项目)生成 XML。
- 数据导出 — 将 JSON 数据集导出为 XML,供只支持 XML 导入的系统使用。
- 报文调试 — 把测试用的 JSON 快速转成 XML,验证对方系统的解析行为。
- 格式学习 — 对照 JSON 与 XML,理解两种格式表达同一数据的差异。
- 生成商品 Feed — 把商品 JSON 数据转成 Google Shopping 等电商平台要求的 XML Feed。
常见问题
JSON 数组怎么转成 XML?
XML 没有数组概念,本工具会把数组的每个元素输出为同名的重复子元素,这是 XML 表达列表的惯例。
XML 必须有单一根节点吗?
是。XML 规范要求唯一根元素,如果你的 JSON 顶层是数组或多个键,本工具会自动包裹一个根节点。
特殊字符会被转义吗?
会。< 、> 、& 、引号等会被转成 < 、> 、& 等 XML 实体,确保输出合法。
支持属性(attribute)吗?
JSON 没有属性概念,默认所有字段都转成子元素。如需属性映射,通常要用约定前缀(如 @)并手动调整。
空对象或空数组怎么处理?
空数组转成空元素包装、空对象转成自闭合标签,避免输出非法的空结构;解析方按自闭合或空容器读取即可。
想反向转换?
请使用本站的「XML 转 JSON」工具。
生成的 XML 没有根节点名或用了很多 <item>?
JSON 顶层可能是数组或没有自然名字的对象,XML 必须有唯一根元素,工具会补 <root>,数组元素统一叫 <item>。需要语义化命名时手动重命名根与元素名,结构不受影响。
属性和文本怎么区分?@ 和 # 是什么?
这是通用约定:@开头表示属性,#text 表示元素文本内容。反向转换时按同样规则还原。如果你只需要纯元素形式,可以在选项里关闭属性映射,让所有数据都走子元素。