JSON/XML

JSON 转 XML

严格映射 JSON 到 XML,明确数组、根属性与文本规则

数据格式
🔒 100% 本地运行 — 你的数据不会离开当前页面
由 Evan 维护•最近更新:2026年9月30日

在本地按明确的记录规则转换。使用输出前请核对下方映射规则;该映射无法保留全部 XML/JSON 数据模型。 输入仅保留在当前页面,不存储草稿。上限:输入 1 MiB、输出 4 MiB、含属性 20,000 个 XML 节点、64 层元素。文本框会规范化粘贴换行;保留 CSV 原始回车请上传 UTF-8 文件。

JSON

对象键生成子元素;@名称 与 #text 映射到当前元素,根也适用。属性/#text 仅接受标量;#text 不能与子元素键并用。数组重复同名键;顶层数组使用数组项名称。空数组不产生项;null、空文本与空对象都变为空元素,因此不保证类型往返。拒绝嵌套数组、命名空间、重复键和不安全数字 token;精确数字请用字符串。

工具说明

JSON 转 XML 使用明确的无命名空间映射。对象键生成子元素,@名称 生成当前元素属性(根也适用),#text 提供该元素的标量文本。属性与 #text 只能是字符串、数字、布尔值或 null。#text 不能与子元素键并存,因为此映射不表达有序混合内容。数组重复同名键;顶层数组使用设置的项名称。空数组不产生项;null、空字符串与空对象都生成空元素,因此不保留全部类型区别,也不保证往返。嵌套数组需要改用具名对象。重复解码键、不安全整数或小数 token、负零、上溢、下溢、命名空间和非法名称都会在输出前拒绝。接受的数字采用 JavaScript 可精确往返的规范表示;编号或需要保留原始数字写法时请用字符串。合法 Unicode 名称和原型同名键都会保留。输入最多 1 MiB、输出最多 4 MiB,XML 最多 20,000 个节点(含属性)和 64 层元素。上传只接受严格解码的 UTF-8;粘贴文本遵循浏览器文本框的换行规则。处理在本地完成,不保存输入草稿。

场景配方

01

从 JSON 样例起草明确 XML 映射

目标:接入前先处理数字精度与空值语义。

  1. 精确编号和小数使用字符串,修正重复解码键,选择根与顶层数组项名称。
  2. 使用 @名称 属性及标量 #text,避免与子元素冲突;更多数组层级改用具名对象。
  3. 生成后核对重复元素、空值与字段顺序,下载完整 XML,再按接收方 Schema 独立验证。

结果:得到类型和结构限制明确的通用 XML 映射。

失败门诊(高频踩坑)

长 JSON 数字编号在写 XML 前已经变了

原因:普通 JSON.parse 就会四舍五入超出精确范围的数字 token。

修复:请从精确原始数据获得 JSON 字符串。本工具拒绝不能安全往返的数字 token。

空值与数组不能还原为原始类型

原因:XML 元素文本没有自动的 JSON 类型或数组标记。

修复:核对已公开的 null、空值与数组映射。逆转换必须保留区别时,请使用符合专用 Schema 的序列化器。

生产可用片段

根属性与标量文本遵循嵌套对象相同规则

json

{"@id":"001","#text":"  A & B  "}

根:record
<record id="001">  A &amp; B  </record>

常见问题

@id 与 #text 在根层也有效吗?

有效,在每个对象层都映射到当前元素。属性与 #text 必须是标量;#text 可以和属性共存,但不能和子元素键共存。

数组与空值如何映射?

数组重复属性名,顶层数组使用设置的项名称。空数组不生成项;null、空文本与空对象生成空元素;嵌套数组会被拒绝。

为什么语法正确的 JSON 数字也会被拒绝?

原始数字 token 必须能精确往返到有限 JavaScript 数字,整数还须位于安全整数范围。负零、上溢和下溢也会被拒绝。不符合时请把精确数字或编号改成字符串。

输出能保留命名空间、类型与 Schema 吗?

不能。这是无命名空间的通用映射,不是保留类型的逆映射或 XSD 校验器。歧义结构会被拒绝,不会猜测命名空间或混合内容语义。

继续浏览