XML 与 JSON 互转

在浏览器中双向转换 XML 与 JSON,保留属性、重复元素和文本内容。

XML 输入

JSON 输出

输入与输出示例

<user id="001"><name>小明</name><tag>XML</tag><tag>JSON</tag></user>{"user":{"@id":"001","name":"小明","tag":["XML","JSON"]}}
{"message":{"@lang":"zh","#text":"你好 & 世界"}}<message lang="zh">你好 &amp; 世界</message>
<p>你好<b>世界</b>!</p>{"p":{"#content":["你好",{"b":"世界"},"!"]}}

如何使用

  1. 选择 XML 转 JSON 或 JSON 转 XML,粘贴内容或载入示例。
  2. 选择输出缩进;JSON 没有唯一根字段时,开启“添加根元素”并填写名称。
  3. 点击转换,或按 Ctrl / ⌘ + Enter;检查结果后复制、下载或大屏查看。

能力与限制

  • 浏览器本地处理
  • 输入最多 1 MiB,输出最多 4 MiB,最多 64 层、50,000 个节点;任务可取消,10 秒超时后停止。
  • XML 属性使用 @ 前缀,同名连续元素转为数组,带属性的文本使用 #text;混合文本或交错元素使用 #content 数组保存顺序。
  • XML 文本和属性保持字符串,不自动推断数字或布尔值;JSON 数字保留原始词法,null 转为空元素。往返转换不能保留 JSON 的原始类型。
  • CDATA 转为普通文本,注释与处理指令不保留;元素间纯排版空白通常忽略,xml:space="preserve" 下保留。
  • 仅处理 XML 1.0,不支持 DTD、自定义实体、Schema 校验;不访问外部资源。命名空间声明作为 @xmlns 属性保留。
  • JSON 默认必须有一个非数组根字段;添加根元素后可处理普通对象、标量和一维数组,顶层数组项使用 item。空数组和嵌套数组会提示错误。
  • XML 标签和属性名须以字母或下划线开头,后续可含数字、组合字符、点或连字符,并可使用一个命名空间前缀。输入、设置和结果仅保留在当前页面内存。

常见问题

为什么数字和 true 变成了字符串?
XML 不自带 JSON 类型信息。保留字符串可避免编号 001、大整数和金额小数被错误改写。
属性、文本和数组如何写回 XML?
例如 {"item":{"@id":"1","#text":"内容"}} 会生成带 id 属性的 item;对象字段中的数组生成多个同名元素。#content 用于按顺序混排文本和单元素对象。
切换方向会清空内容吗?
不会。两个模式分别保留输入、选项、结果、错误和任务。清空只影响当前模式,载入示例与清空都可撤销恢复输入。
内容会发送到服务器吗?
不会。转换在浏览器本地 Worker 中运行,不上传、不记录,也不保存输入历史。

相关指南

XML 与 JSON:属性、重复节点和混合文本的映射 ↗

相关工具

更新于 2026-10-17 · 项目与反馈说明