JSON 工具

XML 转 JSON先选清楚映射,再交给下游

默认示例包含属性、重复元素和命名空间;混合内容示例可用来比较两种输出模式。

XML 转 JSON

JSON 转 XML

XML 输入

JSON 结果

在当前浏览器中处理,不上传或保存输入。

输出选项

始终保留属性与限定名称;文本值保持字符串。

结果已过期,暂时无法导出。

XML 转 JSON 常用于把接口响应、配置或测试样本交给只接收对象与列表的程序。标签名无法说明 001 是数字还是编号,单个元素也未必意味着下游不要数组。

这里的 XML JSON 转换工具把这些约定放在明处:保留字符串、属性和限定名称,需要文本顺序时使用整份文档的有序模型。转换成功并不代表符合业务接口的结构要求。

为什么选择这里的 XML 转 JSON

只有一项时,列表仍能保持数组

XML 转 JSON 默认把相邻重复子元素组成数组。勾选单节点数组选项后,只有一个子元素也会进入数组,便于接收端维持统一类型;最外层根名称不额外包数组。

一个条目和两个条目分别进入数组容器,单条目也保留数组外壳。

先拦住会丢顺序的映射

紧凑模式无法表达正文中夹着标签、或 a,b,a 交错出现的完整顺序,因此直接提示切换模式。有序输出把文本、元素、文本放在同一内容列表中,位置不会被归组打乱。

文本、元素和后续文本按原顺序进入有序内容列表。

检查三个容易忽略的映射选择

01

用混合示例看出模型差别

默认示例可直接得到紧凑对象。混合示例会先显示错误;将输出模式切换为有序内容后,观察 content 中的文本与元素位置,再决定接收程序能否使用这种模型。

02

不要把空白一律当成格式

叶节点文本不会被 trim。默认仅忽略纯元素内容之间的格式空白,xml:space="preserve" 会继承并优先保留空白;保留全部空白时,紧凑模式可能需要改成有序模式。

03

多次编辑时切到手动

自动转换等待 350 毫秒。关闭开关后可集中修改,再按转换或 Ctrl/Cmd+Enter。输入和选项一变就禁用复制与下载,必须等当前结果重新成功才能导出。

属性、文本与命名空间各有位置

属性不与同名元素混在一起

XML 属性转 JSON 时使用 @id 这样的键;带属性的叶节点把正文放在 #text。p:item 与 q:item 保持不同名称,xmlns 声明原样作为属性保留,有序元素另有 namespaceURI。

需要文档内容时保留节点类型

有序模式的 content 数组区分元素、文本、CDATA、注释和处理指令,并保留它们在根前、根内、根后的顺序。XML 声明作为独立元数据记录,原始引号和字节编码不属于此模型。

不猜测业务数据类型

001、12.00、true 和超大整数全部保留为字符串。紧凑模式下空元素是空字符串,带属性的空元素仍有空的 #text。不会因字段看起来像数字就改变编号、精度或前导零。

转换前应知道的边界

只接收严格的单根文档
仅支持良构 XML 1.0。所有 DOCTYPE 均拒绝,包括内部实体声明;不会请求外部实体、XInclude 或 schema 地址,也不会修复缺失闭合标签、重复属性等语法问题。 编码声明只接受 UTF-8 或 UTF8。
紧凑输出有明确拒绝条件
混合文本、交错同名元素、注释和处理指令会阻止紧凑转换,根外的注释也不例外。若要求保留根前后空白,同样应使用有序模式,不必通过删内容来换取成功。
解析结果不等于原文存档
XML 规范会归一化换行与属性空白,并解码字符引用。紧凑模式不保留声明及 CDATA 分段;命名空间前缀不剥离或改写。两种模式都不承诺逐字节往返,也不验证 XSD。
输入与输出都有限额
输入上限为 500,000 字符、深度 100、节点与属性共 50,000 项,输出上限为 2,000,000 字符。不支持文件导入、远程地址、批量或历史记录;反向链接只打开另一个页面。

XML 转 JSON 常见问题

XML 属性如何映射到 JSON?

属性始终保留,紧凑模式在名称前加 @,例如 id 变成 @id。同名子元素仍使用 id,二者不会覆盖。有序模式把限定属性名和值放在 attributes 中。

为什么 XML 转 JSON 把数字保留为字符串?

XML 转 JSON 不依据样子推断类型。编号 001、金额 12.00 和 true 都可能是业务字符串;没有接收端 schema 就无法判断。输出后应由了解字段含义的程序做类型转换。

重复的 XML 元素在 JSON 里如何处理?

默认只有相邻重复的同名子元素成为数组。开启单节点数组选项后,所有子元素都使用数组;根名称保持原来的外层对象。a,b,a 这样的交错顺序在紧凑模式会被拒绝。

转换成 JSON 时 XML 命名空间会怎样?

元素与属性都保留前缀,xmlns 声明也保留。有序节点另外显示解析后的 namespaceURI。不会将不同前缀或 URI 下的同名内容悄悄合并。

我能转换带多个根元素的 XML 吗?

不可以,XML 文档必须有一个根元素。多个并列根会显示语法错误;需要由你确定一个业务上合适的外层容器。本工具不会自动补根或把多份文档拼在一起。

发现了意外结果?

检查下一份接口文档

使用 XML 转 JSON 先核对示例中的属性与数组,再选择接收程序能理解的输出结构。