JSON 转 XML — 将 JSON 数据转为 XML 标记
将 JSON 数据转换为 XML 标记格式。可配置根元素、属性与子元素启发式、美化输出 —— 全部在浏览器中完成,无上传。
XML 和 JSON 是过去二十年数据序列化领域对立的两极。JSON 赢得了 Web:它是浏览器的原生格式,是 REST API 的默认选择,也是每个现代框架的输入。XML 赢得了企业:它是 SOAP 的格式,是遗留系统的配置文件格式,是受监管行业的文档存储格式,也是把形式 schema 作为法律要求的数据交换格式。二者之间的转换是连接两个时代的桥梁,转换中的决策更多是约定层面的,而非数据层面的。
两个最关键的约定:XML 属性使用 @ 前缀,JSON 数组用重复元素表示。@attr 约定是事实上的标准 —— 它不属于任何规范,但被广泛采用,几乎每个 JSON 转 XML 转换器都支持。JSON 对象中形如 @type 的 key,会变成父 XML 元素上的 type="..."。数组则变成同标签名的重复兄弟元素,这是唯一自然的映射:JSON 的有序值列表,在 XML 的无序元素模型中除了用重复的父元素表示之外没有对应物。两个约定都可在输出选项中配置。
生成 XML 之后最常见的下游步骤,是用 XML Schema(XSD)对其进行校验,确保符合预期结构。本站的配套 json-to-xsd 工具能从同一份 JSON 生成该 schema。如果目标是 SOAP 端点或 XML-RPC 调用,生成的 XML 直接作为 payload body;如果目标是文档存储或归档,美化输出的 XML 兼具可读性与 diff 友好性。
使用方法
粘贴你的 JSON
把 JSON 对象拖入输入框,或粘贴 JSON 字符串。转换器遍历结构,输出带有可配置根元素名的 XML 文档。
选择 XML 约定
设置根元素名,选择美化输出的缩进(2 或 4 空格),并切换属性启发式:以 `@` 开头的 JSON key 变成 XML 属性,而不是子元素。
复制或下载 XML
把格式化好的 XML 复制到剪贴板,或下载为 .xml 文件。输出是符合 XML 1.0 标准的合法 XML,能在任何浏览器或 XML 编辑器中打开。
常见问题
JSON key 如何转换为 XML 元素名?
JSON key 直接成为 XML 元素名。以数字开头、包含空格或含有 XML 元素名非法字符的 key,会自动加下划线前缀。`@attr` 约定(以 @ 开头的 key)会成为父元素的 XML 属性。
JSON 数组会怎样处理?
JSON 数组会变成重复的 XML 元素。`items: [{name: 'a'}, {name: 'b'}]` 这种 JSON 会变成 `<items><name>a</name></items><items><name>b</name></items>`。包裹元素沿用 JSON key 名,内部结构按数组元素重复。
包含混合内容的 JSON 对象如何处理?
有些 key 是基本类型、有些是嵌套对象的 JSON 对象,会变成同时拥有子元素(对应嵌套对象)和文本内容(对应基本类型)的 XML 元素。混合内容虽然合法,但在 XML 中并不常见 —— 大多数 schema 要么期望文本,要么期望子元素,不会同时要求两者。
会生成 XML 命名空间吗?
不会。输出是无命名空间的 XML。如果目标 schema 要求命名空间,手动添加 `xmlns` 属性与命名空间前缀。本站的 `json-to-xsd` 工具可以从同一份 JSON 生成带命名空间声明的 XML Schema。
能控制缩进和格式吗?
可以。在 2 空格和 4 空格缩进之间切换。开启「紧凑」模式可输出最小空白(适合机器对机器交换)。美化输出的默认值是 2 空格缩进。
限制说明
- 无法控制 XML 声明输出默认包含 `<?xml version="1.0" encoding="UTF-8"?>`。如果下游消费者期望 standalone 声明或 ISO-8859-1 编码,请手动修改第一行。
- 不支持 CDATA 段字符串值输出为 XML 文本内容,而不是 CDATA 段。如果 JSON 中含有必须用 CDATA 包裹的 HTML 或 XML 片段,请在生成后手动加上 `<![CDATA[...]]>` 包裹。
- 不保留属性顺序JSON 规范中不保证对象的 key 顺序,因此从 @ 前缀 key 派生的 XML 属性可能以任意顺序出现。对于要求特定属性顺序的 schema,请手动排序。
平台说明
- macOS
- 生成的 XML 可以在 Safari、Chrome 以及任何 XML 编辑器中打开。把 JSON 配置转为 XML 喂给仍期待 SOAP 或 XML-RPC 的老系统时,浏览器工具是一次性转换的合适选择。
- Windows
- 生成的 XML 可以在 Edge 以及任何 XML 编辑器中打开。用于把 JSON API 响应一次性转换为 XML、喂给下游 XML 系统的场景。
- Linux
- 命令行场景下,`xmlstarlet` 和 `yq` 都能在格式间互转。无法访问 shell 环境时,浏览器工具是一次性转换的合适选择。
- Web
- 完全在客户端运行,转换耗时在毫秒级。