JSON 工具

JSON 转 XML先确定接收方需要的结构

示例包含属性、文本字段、空数组和 null。调整映射约定后,再导出已校验的文档。

JSON 转 XML

XML 转 JSON

JSON 输入

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

XML 结果

输出选项

类型预览

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

JSON 转 XML 适合把接口返回的对象和列表交给需要 XML 的集成系统。根节点叫什么、字段应写成属性还是子元素,都由接收方约定决定,转换器无法凭数据猜出合同。

本页始终添加你选定的根节点,顶层只有一个值也一样。明确列出数组和空值规则,可以避免把某个库的默认行为误当成统一标准。

为什么在这里使用 JSON 转 XML?

空数组也有位置

JSON 转 XML 为列表保留具名容器,每个成员成为 item 子元素。空列表仍然输出容器,嵌套列表继续保留下一层,因此改数组项名称不会删掉数组边界。

数组进入带有两个子项的容器,旁边的空数组仍保留一个空容器。

区分属性与正文

@id 这样的前缀字段写进属性,#text 则写入元素正文。两者可以同时使用;正文与子元素混排时会报错,因为普通对象成员无法可靠表达任意混合内容的先后顺序。

对象中的一个值进入标签属性,另一个值进入起止标签之间的正文。

先核对接收方的约定

01

根节点始终是额外包装

即使顶层对象只有一个属性,那个属性也保留在根节点下面,不会被自动提升。数组在每层都采用指定项名;接收方若要求同名兄弟元素,需要先确认能否使用本页布局。

02

改标记前检查特殊字段

默认开启映射,属性前缀为 @,文本键为 #text,两者都可修改。关闭映射后,所有键都按元素名处理,留下的 @id 或 #text 会触发名称错误,而不会被忽略。

03

多项修改可切换手动

自动转换等待 350 毫秒。关闭后可以连续调整选项,再点击转换或按 Ctrl/Cmd+Enter。任何输入或参数修改都会立即禁用导出;类型预览每次增加 50 项,最多列出前 500 项。

让结构选择清楚可查

根、数组项与命名空间

根节点和数组项可使用合法的 XML 1.0 本地名称。填写默认命名空间 URI 后,根节点只声明一次,所有元素继承它;无前缀属性不属于这个默认命名空间。

为 null 使用明确标记

默认输出 xsi:nil="true",并自动声明 xsi 命名空间;也可选择遇到 null 就拒绝。空字符串、空对象和空数组仍输出存在的空元素,不会直接移除字段。

文本数值不先转浮点数

无损 JSON 语法树保留数字原文,包括 9007199254740993、-0 和 1e999。特殊字符按 XML 规则转义,属性里的制表符及换行使用字符引用,避免解析规范化改变值。

通过检查才能导出

生成结果交由独立解析器检查 XML 1.0 良构和命名空间,再比对元素名、属性值及文本。可选两空格、四空格或紧凑输出,并决定是否添加 UTF-8 声明。

映射无法替你决定的事

普通 XML 不保存全部类型
数字和布尔值变成文本,没有 JSON 类型注解。空数组、空对象和空字符串可能得到相同的空元素。保留节点不代表反向还原没有歧义,本工具不承诺通用无损往返。
非法键不会自动改名
空键、带空格或以数字开头等非法元素名会中止转换,并显示 JSON Pointer。不会用下划线修复名称、排序、接受注释或在重复键中偷偷只保留最后一个值。
属性与正文必须是非空值标量
映射属性和文本字段只接受非 null 的字符串、数字或布尔值,不能放对象、数组或 null。文本字段也不能与子元素同时出现,即使文本为空字符串也一样。
命名空间功能有明确范围
仅提供默认命名空间和内建 @xml:lang 属性。其他冒号名称、xml:space、用户声明的 xmlns 及 xsi 覆盖均拒绝。XML 与 XMLNS 保留 URI 不能作默认值;不执行 XSD、DTD 或 SOAP 业务合同验证。
只处理有限大小的文本
上限为输入 500,000 字符、深度 100、50,000 节点和输出 2,000,000 字符。XML 1.0 禁止的控制字符与孤立代理项会报错。不提供网址读取、文件导入、批量压缩包、CDATA 生成或反向转换。

JSON 转 XML 常见问题

根对象需要几个键?

不要求只有一个键。JSON 转 XML 转换器会额外添加设定的根节点,对象里的所有成员都留在其下;顶层数组、字符串、数字、布尔值和 null 也按各自规则包装。

如何写出 XML 属性?

默认把 @id 映射为 id 属性,把 #text 映射为元素正文。属性只接受非 null 标量,不会自动把其他普通字段改成属性;也可以更改标记以匹配已有数据约定。

JSON 数组怎么表示?

数组属性先生成自己的容器,再为每个成员生成指定名称的子项。空数组保留空容器,嵌套数组保留层级。接收方若要求直接重复属性名,应先确认它是否接受这种包装结构。

键名不是合法元素名时会怎样?

转换会报出路径,并保留输入供你修改。JSON XML 转换不应通过自动替换字符掩盖名称冲突;根名称和数组项名称不合法时,同样需要显式修正。

缩进会改变文档含义吗?

缩进会在容器的子元素之间添加空白,所以接收方必须允许这种格式空白。标量正文不会被美化改写;如果对额外空白敏感,可选择紧凑模式。本页拒绝 xml:space,以避免继承规则与缩进冲突。

有文档需要特殊的映射规则?

准备下一份集成文档

用 JSON 转 XML 检查示例,再设置接收系统要求的根节点与命名空间。