JSON 转 XML

免费在线 JSON 转 XML 工具,将 JSON 对象或数组自动转换为标准 XML 格式。JSON 对象包装为 <root> 根节点,数组自动包装为 <root><item> 重复节点结构,prettyPrint 格式化输出,纯浏览器本地处理不上传。

相关推荐

关于 JSON 转 XML:把 JSON 数据自动转换为标准 XML 格式

JSON 转 XML 是把 JSON 格式的数据(JSON 对象或 JSON 数组)转换为 XML(eXtensible Markup Language)格式的过程。JSON(JavaScript Object Notation)是现代 Web API 的标准数据格式,XML 是企业系统、SOAP Web Service、配置文件、Office 文档的传统数据格式。两种格式各有优势:JSON 简洁易解析,XML 严格自描述、广泛支持命名空间和 schema 验证。开发中常需要把 JSON 数据转换为 XML 以对接遗留系统或满足特定业务需求,本工具就是要把这个过程自动化。

本工具的核心是基于 xmlbuilder2 库把 JSON 节点递归转换为 XML 元素。转换规则非常简单:JSON 对象的 key 变成 XML 元素名,value 变成元素文本内容;数组则被包成重复的 <item> 子元素。JSON 对象默认包装为 <root> 根节点,数组包装为 <root><item>...</item></root> 结构。prettyPrint: true 参数启用美化输出,自动添加缩进和换行。

数组到重复元素的映射是 JSON 转 XML 的关键设计。XML 没有原生的数组概念,需要通过重复元素(如 <item>1</item><item>2</item>)来表示列表数据。本工具统一使用 <item> 作为数组元素子节点名称,外层用 <root> 包裹形成符合 XML 数据交换约定的标准结构。生成的 XML 兼容 RSS、SOAP、企业 XML 协议等常见应用场景。

prettyPrint 模式生成的 XML 可读性远高于 minify 模式。开发人员可以直接用文本编辑器、XML 编辑器(XMLSpy、oXygen)或浏览器打开查看,而不必先经过 xmllint 等格式化工具。这一设计在调试和手动调整 XML 时特别有用。

JSON 的基本类型到 XML 的映射规则很简单:字符串直接作为元素文本(如 <name>Alice</name>);数字转为字符串形式(如 <age>30</age>);布尔转为字符串 'true'/'false';null 转为空元素或省略。所有非字符串类型在 XML 中都丢失了类型信息,解析时需要 schema 或类型提示还原。

嵌套对象会递归生成对应的 XML 树。例如 { "user": { "name": "Alice", "age": 30 } } 会变成 <root><user><name>Alice</name><age>30</age></user></root>。这种结构保留了原始 JSON 的层级关系,方便 XML 解析器通过 XPath 查询。

本工具采用纯元素映射模式,所有 JSON 数据都转为 XML 元素,不使用 XML 属性(attribute)。这是因为元素映射更直观、可读性更好,且支持更复杂的嵌套结构。如果业务需要属性形式(如 <node attr="value"/>),可以手动调整生成的 XML,或使用 XSLT 转换。

实时转换是工具的实用功能。输入 JSON 后 400ms 防抖自动触发转换,配合 5 个键盘快捷键(macOS ⇧⌘+Enter/F/O/D/K),用户可以快速完成转换、格式化、上传、下载、清空等常用操作,无需鼠标点击。

JSON 错误自修复提升了工具的容错性。现实中用户输入的 JSON 经常有尾随逗号、单引号、缺引号、注释等小问题。内置 tryFixJSON 函数会在 JSON.parse 失败时自动尝试修复常见错误,修复成功后会提示用户;如果仍无法解析,会在右侧显示具体错误位置和原因。

纯前端处理是本工具的核心架构。所有 JSON 解析、XML 生成都在浏览器 JavaScript 中执行,不向任何服务器发送数据。这种设计有两点核心好处:第一,JSON 数据可能包含敏感信息(用户数据、API key、内部业务),本地处理完全消除泄露风险;第二,转换速度仅受设备 CPU 限制,1MB 以内的 JSON 几乎瞬时转换完成,无需等待网络往返。

适用场景

  • Android 国际化:把 JSON 多语言词条转换为 strings.xml 资源文件格式,做安卓 APK 多语言包打包。
  • iOS 客户端工程:把 JSON 应用元数据转为 Info.plist 的 XML 格式,用于 XCode 打包 IPA 提交 App Store 审核。
  • 金融支付对接:把 JSON 交易明细转成 ISO 20022 或 SWIFT MT 标准报文的 XML 格式,对接银行核心清算系统。
  • 医疗信息化集成:把 JSON 电子病历或检验报告转为 HL7/FHIR 标准 XML,提交到区域卫生信息平台做归档。
  • Java 老项目迁移:把 JSON 配置转成 Spring XML、Tomcat server.xml 或 Maven pom.xml 格式,迁移历史 XML 配置项目。
  • 接口回归测试:把生产正常响应的 JSON 转成 XML 作为 golden file 快照,用于回归断言对比异常返回。
  • 客服工单处理:把 IM 在线聊天记录的 JSON 导出为 XML 工单附件,导入 Zendesk 或 Salesforce 客服系统。
  • 业务日报生成:把 JSON 业务指标转成 XML 数据源,再通过 XSLT 渲染为 HTML 模板邮件定时发送给业务方。
  • 工具链多步串联:先用 json-format 修复压缩 JSON 排版,再用 jsonpath 过滤指定字段,最后用本工具转 XML 处理多步流水线。
  • 特殊字符编码排查:把含 GBK/EUC 中文或 emoji 的 JSON 转 XML 后,通过 XML 解析器核对实体转义和编码声明是否正确。
  • 下游多格式输出:同一份 JSON 先转 XML 给企业系统,再转 CSV 给数据团队,最后转 YAML 给运维,做多下游分发。
  • 前端 Monaco 高亮展示:把接口 mock JSON 转成 XML 后贴到 Swagger UI 或 ApiFox 文档展示,给前端的 XML 解析代码做对照样例。
  • GitHub Actions 制品:把 CI 收集的 JSON 覆盖率或测试报告转 XML,用作 SonarQube 或 Codecov 通用 reporting XML 上传。

使用方法

  1. 在左侧输入框粘贴 JSON 内容,或点击「上传」按钮选择 .json/.txt 文件,或点击「示例」加载内置样例。
  2. 工具会自动转换(输入后 400ms 防抖);在右侧查看生成的 XML 代码,CodeMirror XML 语法高亮便于阅读。
  3. 可点击「格式化」按钮(⇧⌘+F)将 JSON 重新缩进为 2 空格,便于阅读复杂 JSON 结构。
  4. 点击「复制」将 XML 复制到剪贴板,或点击「下载」保存为 output.xml 文件(MIME: text/xml)。
  5. 如需修改根节点名称或添加命名空间,可手动编辑生成的 XML。
  6. 将 XML 粘贴到目标系统(API 客户端、XML 编辑器、企业系统)使用。

功能特点

  • 智能节点包装:JSON 对象自动包装为 <root> 根节点,数组自动包装为 <root><item> 重复节点,符合 XML 数据交换约定。
  • prettyPrint 美化输出:基于 xmlbuilder2 库的 prettyPrint 模式生成带缩进和换行的可读 XML,无需手动格式化。
  • 实时自动转换:输入 JSON 后 400ms 防抖自动转换,配合 5 个键盘快捷键提升操作效率。
  • JSON 错误自修复:内置 tryFixJSON 修复函数,自动处理尾随逗号、单引号、缺引号等常见语法错误。
  • 基本类型兼容:支持 null、boolean、number、string 等 JSON 基本类型,全部转为 XML 元素文本。
  • 嵌套对象递归:任意深度的嵌套对象会递归生成对应的 XML 元素树,保持数据结构完整性。
  • 数组多层支持:一维和多维数组都能正确转换为 <item> 重复节点结构。
  • JSON/XML 双重高亮:左侧使用 CodeMirror JSON 语法高亮,右侧使用 XML 语法高亮,可读性强。
  • 完整快捷键体系:5 个常用快捷键(转换/格式化/上传/下载/清空),支持 macOS 和 Windows/Linux。
  • 复制与下载:一键复制到剪贴板,或下载为标准 output.xml 文件(MIME: text/xml)。
  • 纯浏览器本地处理:所有 JSON 解析、XML 生成都在浏览器 JavaScript 中完成,原始数据不上传。
  • 历史记录恢复:自动保存最近 200 条历史记录,页面加载时自动恢复上次输入内容。

常见问题

怎么把 JSON 转成 XML 格式?

把 JSON 内容粘贴到左侧输入框,工具会自动将其转换为标准 XML 格式。JSON 对象会包装为 <root> 根节点(如 { "name": "Alice" } → <root><name>Alice</name></root>),数组会包装为 <root><item>...</item> 重复节点结构。400ms 后自动转换,无需手动点击。

JSON 数组怎么转成 XML?

JSON 数组会被工具自动包装为两层结构:外层是 <root> 根节点,内层是 <item> 重复节点。例如 [{"a":1},{"a":2}] 会被转换为 <root><item><a>1</a></item><item><a>2</a></item></root>。这种设计符合常见的 XML 数据交换格式约定(如 RSS、SOAP 消息)。

生成的 XML 格式是美化过的吗?

是的,工具基于 xmlbuilder2 库的 prettyPrint 模式生成美化过的 XML,输出带缩进和换行的可读格式。开发者可以直接复制到 SOAP 工具、XML 编辑器或配置文件中阅读,无需手动格式化。

支持哪些 JSON 数据结构?

支持所有合法 JSON 数据结构:基本类型(null、boolean、number、string)、数组(一维或多维)、嵌套对象(任意深度)。数组在每个层级都会被包成 <item> 重复节点。JSON 中包含函数、Symbol、undefined 等 JavaScript 特殊值不是合法 JSON,无法转换。

下载的 XML 文件能直接用于 SOAP 或 RSS 吗?

可以。生成的 XML 符合标准 XML 1.0 规范,能被大多数 SOAP 工具、RSS 阅读器、XML 数据库(如 BaseX、eXist)以及企业系统(SAP、Oracle)直接解析。下载文件名为 output.xml,可被任何 XML 处理工具读取。

JSON 解析失败怎么办?

如果 JSON 存在尾随逗号、缺引号、单引号代替双引号等常见错误,工具会自动调用 tryFixJSON 尝试修复。修复成功后会提示用户;如果无法修复,会在右侧显示具体错误位置和原因。可使用 2/4 空格缩进重新格式化后再尝试。

可以自定义 XML 根节点名称吗?

本工具统一使用 root 作为根节点名称,数组元素使用 item 作为子节点名称。这是 XML 数据交换中最通用的命名约定,避免命名冲突。如果你需要自定义根节点或子节点名称,可以手动编辑生成的 XML,或在 JSON 中添加根键(如将 { "data": [...] } 转换为 <root><data>...</data></root>)。

JSON 数字和布尔值在 XML 中如何表示?

XML 没有原生数字和布尔类型,所有值都被转为字符串。例如 JSON 中的 true 会变成 XML 元素 <isActive>true</isActive>,数字 30 会变成 <age>30</age>。解析时 XML 解析器会按 schema 或类型提示自动转换。如果需要保留类型信息,建议使用 JSON Schema 或 DTD/XSD 验证。

支持 XML 命名空间(namespace)吗?

本工具生成标准 XML(无命名空间),适合大多数通用场景。如果需要 SOAP 或 WSDL 等需要命名空间的 XML,可以手动编辑生成的 XML 添加 xmlns 声明,或使用专门的 SOAP 工具链。

支持 XML 属性(attribute)吗?

不支持。工具采用纯元素(element)映射模式:所有 JSON key 转为 XML 元素,所有 value 转为元素文本内容。如果你需要属性形式(如 <node attr='value'/>),需要手动调整生成的 XML 或使用 XSLT 转换。

支持哪些输入文件类型?

支持 .json 和 .txt 文件(UTF-8 编码)。点击「上传」按钮选择本地文件,工具通过浏览器原生 FileReader API 读取,不会上传到服务器。上传成功后内容自动填入输入框并触发转换。

键盘快捷键有哪些?

工具支持以下快捷键:macOS 用户 ⇧⌘+Enter 转换、⇧⌘+F 格式化、⇧⌘+O 上传、⇧⌘+D 下载、⇧⌘+K 清空;Windows/Linux 用户用 Ctrl 替代 ⌘。这些快捷键遵循主流 JSON 编辑工具的约定,熟练使用可显著提升操作效率。

故障排查

生成的 XML 根节点叫 root,能改吗?

本工具统一使用 root 作为根节点名称(数组元素为 item)。如果业务需要自定义名称(如 <response>、<data>),有两种方案:1) 手动编辑生成的 XML,用文本编辑器的查找替换功能把 <root> 改为目标名称;2) 在 JSON 数据中包一层(如 {"response": {...}}),生成的 XML 会变成 <root><response>...</response></root>,然后用查找替换去掉外层 <root>。

XML 解析报错 'unclosed token' 怎么办?

原因通常是 JSON 字符串包含 XML 特殊字符(<、>、&)未正确转义。本工具会自动将这些字符转为 XML 实体(&lt; &gt; &amp;),但极少数边界情况(如 CDATA 段、注释)可能需要手动处理。检查 JSON 中的 < 和 > 字符,确认它们是数据内容而非意外的标签开始。

数组元素如何自定义标签名(不用 item)?

本工具统一使用 <item> 作为数组元素子节点名称(符合 RSS、SOAP 等通用约定)。如果业务需要其他名称(如 <row>、<entry>),可以手动编辑生成的 XML,用查找替换把 <item> 替换为目标名称并同步调整结束标签 </item>。

JSON 数字变成字符串丢失了类型怎么办?

XML 没有原生数字类型,所有 value 都转为字符串。如果需要在解析端区分类型,方案:1) 使用 XSD schema 验证 XML 并指定元素类型(xs:integer、xs:boolean);2) 在 JSON 中预先用 key 名称暗示类型(如 price_string、count_number);3) 转换后用 XSLT 脚本根据业务规则转换类型。

如何让数字在 XML 中保持数字类型?

XML 1.0 标准没有原生数字类型。如果必须保留类型信息,方案:1) 使用 XSD schema 在 <xs:element name="age" type="xs:integer"/> 中声明;2) 使用 JSON Schema 配合 XML Schema 转换工具;3) 在数据外层加 XSI 命名空间(xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance")。

下载的 .xml 文件用什么打开?

下载文件 output.xml 是 UTF-8 编码的标准 XML 文件,可用任何文本编辑器(VS Code、Sublime、Notepad++)或专业 XML 编辑器(XMLSpy、oXygen)打开。也可直接拖入浏览器(Chrome、Firefox)查看格式化的树状结构。SOAP/RSS 阅读器、企业中间件、XML 数据库(BaseX、eXist)也能直接读取。

JSON 中含 emoji 或中文会出错吗?

不会。本工具支持完整的 UTF-8 编码,包括中文、日文、韩文、emoji 等 Unicode 字符。xmlbuilder2 库会自动处理 XML 实体转义,emoji 和中文都会按原样出现在 XML 元素中,无需特殊处理。

术语表

JSON (JavaScript Object Notation)
轻量级数据交换格式,基于 JavaScript 对象语法但独立于编程语言。支持对象 ({}), 数组 ([]), 字符串, 数字, 布尔, null 六种基本类型。广泛用于 REST API、前后端数据传输、配置文件等场景。
XML (eXtensible Markup Language)
可扩展标记语言,由 W3C 于 1998 年制定。使用尖括号标签描述数据结构和内容,支持命名空间、Schema 验证、XSLT 转换。是 SOAP Web Service、Office Open XML、RSS、Atom 等的标准格式。
xmlbuilder2
JavaScript XML 构建库,用于以编程方式生成结构化 XML 文档。支持命名空间、属性、美化输出(prettyPrint)、CDATA 段、注释等高级特性。本工具基于此库实现 JSON 到 XML 的自动转换。
节点包装(root / item)
本工具的 XML 节点命名约定:JSON 对象统一包装为 <root> 根节点;JSON 数组的元素统一包成 <item> 重复子节点。这种命名避免了与用户数据中的 key 冲突,符合 XML 数据交换的通用约定。
prettyPrint
xmlbuilder2 库的输出模式。启用后生成的 XML 自动添加缩进和换行(如 2 空格缩进),可读性高;禁用时输出紧凑无空白(minify)。本工具默认启用 prettyPrint。
SOAP (Simple Object Access Protocol)
基于 XML 的 Web 服务通信协议。SOAP 消息由 SOAP envelope(XML 命名空间)包裹,内含 header 和 body(XML payload)。本工具可生成 SOAP body 需要的 XML payload,再手动添加 envelope 即可。
RSS / Atom feed
基于 XML 的内容订阅格式。RSS 2.0 格式以 <rss><channel><item> 结构组织内容,Atom 使用 <feed><entry> 结构。本工具生成的 <root><item> 模式与 RSS 类似,可作为 RSS 生成器的中间步骤。
元素 vs 属性
XML 中数据表示的两种方式。元素用开始/结束标签包裹(如 <name>Alice</name>),属性用 key="value" 形式(如 <user name="Alice"/>。本工具采用纯元素映射,不使用属性。
CDATA 段
XML 中的特殊语法 <![CDATA[...]]>,用于在元素内嵌入含特殊字符(如 <、>、&)的文本而无需转义。本工具默认不生成 CDATA 段,特殊字符会被自动转义为 XML 实体(如 &lt; &gt; &amp;)。
XML 命名空间(namespace)
通过 xmlns 属性避免元素名称冲突的机制,格式如 xmlns:prefix="uri"。常用于 SOAP(http://schemas.xmlsoap.org/soap/envelope/)和 XHTML 等标准。本工具不自动添加命名空间,需要时手动编辑生成的 XML。
XPath
XML 路径查询语言,用于在 XML 文档中定位节点。如 /root/user/name 可查询根元素下 user 元素下的 name 元素。本工具生成的 XML 结构便于 XPath 查询。
XSLT
XML 样式表转换语言,用于将一种 XML 格式转换为另一种(如 XML 转 HTML、XML 转 PDF)。本工具生成的 XML 简单结构便于 XSLT 后处理。
tryFixJSON
本工具内置的 JSON 修复函数,会自动处理尾随逗号、单引号代替双引号、缺引号的 key、注释等常见 JSON 语法错误。在 JSON.parse 失败时自动调用,修复成功后会通知用户并继续转换。

JSON 类型到 XML 元素的映射规则

本工具基于 xmlbuilder2 的 JSON 到 XML 转换映射规则:

JSON 值示例XML 元素映射规则
string"Alice"<name>Alice</name>字符串直接作为元素文本内容
number30<age>30</age>数字转为字符串形式(类型信息丢失)
booleantrue<isActive>true</isActive>布尔转为字符串 'true'/'false'
nullnull<field></field> 或省略null 转为空元素(依赖 xmlbuilder2 默认行为)
object{"a":1}<root><a>1</a></root>对象包装为 <root> 根节点,key 转为子元素
array of objects[{"a":1}]<root><item><a>1</a></item></root>数组包成 <item> 重复节点
nested object{"user":{"name":"x"}}<root><user><name>x</name></user></root>嵌套对象递归生成对应元素树
nested array[[1,2]]<root><item><item>1</item><item>2</item></item></root>多层数组递归包装 <item>

JSON vs XML 格式对比

两种数据格式在不同维度上的对比,帮助理解何时选择 JSON 或 XML:

维度JSONXML说明
语法{ } : [ ] 简洁< > </> 冗长JSON 语法更简洁,XML 标签更冗长但可读性高
数据类型原生支持 number/bool/null全是字符串JSON 保留类型,XML 需靠 schema 验证类型
数组原生 [1,2,3]重复元素 <i>1</i><i>2</i>JSON 数组简洁,XML 数组依赖命名约定
注释不支持(标准)<!-- 注释 -->XML 支持注释,JSON 标准不支持(仅 JSON5/JSONC)
命名空间xmlns 支持XML 命名空间避免大型文档的命名冲突
Schema 验证JSON SchemaXSD / DTD两者都有成熟的 schema 验证机制
解析性能更快(~3-5x)较慢(标签开销)JSON 解析更简单,XML 解析更复杂
使用场景REST API、前后端SOAP、企业、Office现代 Web 用 JSON,传统企业用 XML

XML 特殊字符转义规则

本工具在 JSON 字符串包含 XML 特殊字符时自动进行的转义规则:

特殊字符XML 实体JSON 示例XML 输出
<&lt;"<"<field>&lt;</field>
>&gt;">"<field>&gt;</field>
&&amp;"&"<field>&amp;</field>
"&quot;"\""<field>&quot;</field>
'&apos;"'"<field>&apos;</field>
Tab&#9;"\t"<field>&#9;</field>
Newline&#10;"\n"<field>&#10;</field>

Privacy & Security

本 JSON 转 XML 工具所有操作完全在你的浏览器本地完成:JSON 解析、XML 生成、prettyPrint 美化全部通过浏览器 JavaScript(基于 xmlbuilder2 库)在客户端执行,不会通过网络向任何服务器发送 JSON 内容、上传的文件或生成的 XML。文件上传使用浏览器原生 FileReader API 直接读取到内存,不经过任何中间服务。不使用 Cookie 追踪,不收集任何用户输入或使用数据。关闭或刷新页面后,所有输入和输出内容自动从内存清除。适合处理含敏感业务数据、企业内部 API 响应的 JSON。

Authoritative References