选择语言

XML 转 JSON 在线转换工具

将XML数据转换为JSON格式,支持自定义属性前缀、数值与布尔类型解析,并提供修剪空白与错误定位功能。

Mehmet Demiray 发布日期 更新日期
分享
跳过 XML 属性,不纳入输出
设置 JSON 输出格式的缩进空格数

XML 与 JSON:两种数据模型的本质区别

在数据交换领域,XML 和 JSON 代表了两种截然不同的结构化哲学。XML 源于文档标记语言,天生支持属性、混合内容、命名空间和严格的元素顺序。比如一个描述图书的 XML 片段:<catalog><book id="b001"><title>西游记</title><author>吴承恩</author></book></catalog>,其中 id 是属性,而 title 和 author 是子元素。JSON 则基于对象和数组,所有数据以键值对呈现,没有属性的概念,会变成 {"id": "b001", "title": "西游记", "author": "吴承恩"}。使用「XML 转 JSON」工具,就是在这两种模型间建立映射。理解它们的根本差异,能帮助你预判转换结果,避免数据丢失。如果你需要把 JSON 模型转回带属性的 XML,可以使用 JSON 转 XML 工具进行反向操作。

映射机制详解:属性前缀与数组生成

「XML 转 JSON」工具的核心映射规则围绕两点:属性前缀和重复元素数组化。XML 属性在 JSON 中没有天然对应,工具会默认给属性键添加一个前缀,通常是“@”或你可以自定义的符号。比如 <book id="b001"> 会变成 {"@id": "b001", ...},从而和普通子元素区分开。如果同一标签下出现多次相同的子元素,转换器会将其自动收集为一个 JSON 数组。例如点餐的 XML:<order><item>包子</item><item>豆浆</item></order>,会生成 {"order": {"item": ["包子", "豆浆"]}}。这种方式非常适合后续的程序遍历。转换完成后,建议用 JSON 格式化工具 美化输出,让数组结构更清晰。若希望某个元素始终以数组形式出现,即使只出现一次,可以查看工具的高级设置选项。

类型强制:让数字和布尔值不再是文本

XML 中的所有数据本质上都是文本节点。<price>29.9</price> 实际上是字符串“29.9”,而不是数字。在 JSON 世界里,明确区分字符串、数字和布尔值对后续处理很重要。「XML 转 JSON」工具提供了“解析数字和布尔值”的选项。开启后,转换器会智能分析文本内容:符合数字格式的如“29.9”、“-3.14”会转为浮点数,纯整数如“108”会转为整型,“true”和“false”会转为布尔值。例如一段商品 XML:<product><name>龙井茶</name><price>128.00</price><available>true</available></product>,未开启类型解析时所有值都是字符串,开启后 price 变为数字 128,available 变为布尔值 true,可以直接参与运算或条件判断。如果你的原始数据是 CSV 表格,可以先用 CSV 转 JSON 转换器 得到基础 JSON,再按需进行类型强制。

转换的边界:命名空间、顺序与混合内容

「XML 转 JSON」工具追求快速实用的转换,但某些 XML 特性在 JSON 中无法完美保留。首先是命名空间,比如 <ns:book xmlns:ns="http://example.com">,转换后的 JSON 键通常会简化为“book”,命名空间 URI 信息会丢失。其次是元素顺序,JSON 规范中对象的键是无序的,虽然多数编程语言的解析器会保持插入顺序,但如果业务逻辑强依赖 XML 的元素先后关系,就需要注意这一点。最难处理的是混合内容:<desc>这是一本<b>精彩</b>的书</desc>,文本和标签交错出现,JSON 很难同时表达层级与文字顺序,工具可能会合并文本或丢弃部分结构。CDATA 区段会被当作普通文本提取内容,注释则会被忽略。因此,本工具更适合以数据为中心的 XML,比如配置文件和接口数据。完成转换后,可以用 JSON 格式化工具 检查属性简化情况。

为什么 XML 属性在 JSON 中必须加前缀

XML 属性在转换为 JSON 时几乎必须加前缀,根源在于两个数据模型的结构性冲突。考虑一个典型的中文场景:<person name="张三"><name>李四</name></person>,属性 name 和子元素 name 恰好同名。如果直接映射为 {"name": ...},JSON 键就会发生冲突,后出现的值会覆盖前面的值。引入前缀机制可以完美区分二者,默认情况下工具会输出 {"@name": "张三", "name": "李四"}。@ 符号是最常见的选择,你也可以根据后端解析习惯自定义为“-”或“_attr_”等形式。这种约定保证了 JSON 结构的扁平化和确定性,让后续程序能够明确区分数据来源。反过来,使用 JSON 转 XML 工具时,你也需要决定哪些 JSON 键应该输出为 XML 属性,本质上是同一映射难题的另一面。

实战指南:处理 CDATA、注释与 SOAP 接口响应

不少开发者使用「XML 转 JSON」工具是为了对接传统系统,比如老旧的 SOAP 服务。SOAP 响应是合法的 XML,可以直接粘贴到工具中转换。转换过程中,<soap:Envelope> 等包含命名空间的标签会被简化为 Envelope,Body 内部的业务数据则可以顺利转为 JSON 对象。对于 CDATA 片段,比如 <content><![CDATA[价格 < 100 元]]></content>,工具会保留内部文本“价格 < 100 元”,但 CDATA 的原始标记不会出现在 JSON 中,因为 JSON 本身不需要像 XML 那样对特殊字符进行转义。XML 注释如 <!-- 这是注释 --> 在转换时会被完全忽略,输出 JSON 里看不到任何痕迹。总体而言,只要接受命名空间简化和注释丢失,这个工具非常适合快速提取 SOAP 报文或对接传统支付、物流接口。提取出的 JSON 可以配合 JSON 格式化工具 进一步分析结构,大幅提升调试效率。

我们回答最多的问题

为什么我转换后的JSON里,XML属性前面都加了一个“@”符号?

这是为了在扁平的JSON对象中区分属性与子元素,避免命名冲突。XML允许属性和子元素同名,但JSON键必须唯一。本工具默认启用“保留属性(带前缀)”选项,给属性名添加“@”前缀。如果你确定XML中没有名称冲突,可以在转换前关闭该选项,这样属性名就不会带前缀,但同名的子元素可能会覆盖属性值。

XML里出现了多次 <item>...</item>,转换后会变成数组还是一直覆盖?

工具会自动将重复出现的同名元素合并为JSON数组。例如,<root><item>A</item><item>B</item></root> 会生成 {"root": {"item": ["A", "B"]}}。如果某个元素只出现一次,则保持为对象或字符串,避免不必要的数组嵌套。如果你想进一步整理JSON结构,可以使用 JSON 格式化工具 来美化查看。

我能把企业服务的SOAP响应报文直接丢进去转换吗?

可以。本工具接收任意格式良好的XML,包括带命名空间的SOAP报文。不过SOAP响应中复杂的多层命名空间前缀和声明会被简化处理,可能会导致键名与原始标签不完全一致。建议先转换小样例确认结构符合预期后,再批量处理。另外,请确保XML文档完整且无语法错误,否则转换会直接报错。

XML文件里的 <![CDATA[ ... ]]> 和 <!-- 注释 --> 转换后会去哪儿?

CDATA节中的内容会被保留,并作为普通字符串出现在对应键值中,CDATA标记本身会被丢弃。XML注释(<!-- ... -->)则会被完全忽略,不会出现在生成的JSON里。如果你需要保留注释中的某些业务信息,建议在转换前先手动处理或备份原文件。

勾选“解析数字和布尔值”后,为什么 <age>25</age> 变成了数字25,而不是字符串“25”?

该选项会尝试将文本节点中的“true”“false”转换为布尔值,将纯数字字符串转换为JSON数字类型,这对需要严格数据类型的前端开发非常方便。如果你希望所有值保持字符串不变,取消这个选项即可。注意,像“0123”这样的数字字符串会被转为数字123,前导零会丢失,使用前请确认符合预期。

转换得到的JSON还能不能一点不差地转回原来的XML?

通常不能实现无损往返。因为XML属性顺序、命名空间声明、混合内容(文本与元素交错)以及注释等信息在转换过程中会被简化或丢弃。如果你需要双向转换,可以配合使用 JSON 转 XML 工具,但还原出的XML在结构上可能与原文存在差异,建议将本工具定位为单向数据提取与集成。

这个工具需要联网吗,XML文件太大会不会崩?

工具完全在浏览器本地运行,无需联网,数据不会上传,适合处理内网敏感数据。但受浏览器内存和JavaScript解析性能限制,过大的XML文件(建议不超过 5 MB)可能导致页面卡顿或崩溃。遇到大文件,可以先分割成多个小片段再分别转换。

和VS Code、IntelliJ里的XML转JSON插件相比,这个在线工具有什么不同?

最大的区别在于零安装和跨平台。你不需要配置开发环境,打开浏览器就能用。而且它提供了图形化的选项切换(如属性前缀、类型解析),比IDE插件常需修改配置文件更直观。但IDE插件通常与项目深度集成,能处理复杂的XSD绑定。日常快速校验或临时提取数据,用这个在线工具会更轻便;长期开发集成还是推荐IDE插件。