上周对接一家物流商的 SOAP 接口,对方只收 XML,我手里却是一份从内部系统导出的 JSON 订单:42 个字段,含两层嵌套的收发货地址和一组明细数组。手写标签要半小时,还得逐个检查 & 和 < 有没有转义。后来用 JSON 转 XML 工具(https://json-xml.quan77.cn/)把整段 JSON 粘进去,一次生成结构完整的 XML,前后不到两分钟。省下的不只是打字时间,还有对照字段名逐个核对的注意力。
最快出结果的路径是什么?
打开页面就能看到左右两个输入区,左边贴 JSON,右边出 XML,或者反过来。没有登录、没有文件上传步骤,这是它比多数在线转换器省事的地方。
真实最短链路只有三步:把 JSON 粘进左侧 → 确认根节点名称(默认是 root,多数 SOAP 接口要求换成业务名,比如 OrderRequest)→ 点转换,右侧直接出结果并带复制按钮。
这里有个容易忽略的点:根节点名不是装饰。很多 SOAP 服务端按根标签做路由,名字错了会返回 500 而不是报格式错误,排查起来很绕。转换前先翻一眼对方 WSDL 里的 element 名,比转完再改省事。
另外,工具默认会把 JSON 数组转成重复的同名子元素,而不是加 item 包裹层。如果你的接口要求数组必须包一层,转完要手动补,这一点后面会细说。
三个真实场景分别怎么用?
场景一:SOAP 接口联调,JSON 请求体转 XML 报文
输入是内部系统导出的订单 JSON,两层嵌套,明细数组 8 条。转换后得到带层级缩进的 XML,字段名原样保留。我把它贴进 Postman 的 raw body,Content-Type 设为 text/xml,一次通过。
这个场景的价值在字段名一致性:手写时最容易把 receiverAddress 写成 receiveAddress,工具是机械映射,不会错。
场景二:把老系统返回的 XML 转回 JSON 做断言
反向也用得上。对方返回的 XML 响应有 60 多行,肉眼比对字段太慢。我把它粘进右侧输入区转成 JSON,再丢进测试脚本里做 deepEqual 断言。嵌套结构在转换后保持层级,数组还原成数组,断言写起来比解析 XML 节点直观。
场景三:给前端 mock 一份 XML 样例
前端同事要调一个只吐 XML 的旧接口,本地没有数据。我把后端给的 JSON 示例转成 XML 存成 fixture 文件,前端直接用。这里要注意:转换只保证结构对应,不保证符合对方 XSD 的字段顺序和类型约束,mock 够用,真联调还得拿真实响应核对。
什么时候别用它?
这是最该说清楚的部分。
第一,带命名空间前缀的 XML 不要指望它。SOAP 报文常见 soapenv:Envelope 这类前缀,工具的转换是结构映射,不会自动生成 xmlns 声明和前缀。你转出来的 XML 结构对,但协议层不合法,粘进 SOAP 客户端会直接报错。这种报文建议用脚本里的 lxml 或专门模板生成。
第二,超大文件别走浏览器。几 MB 的 JSON 粘进文本框,页面会卡,复制也容易截断。超过一两千行就该换命令行工具,比如 xmltodict 或 json2xml,可脚本化且不占内存。
第三,需要严格类型转换的场景。JSON 里的数字 1 和字符串 "1" 转成 XML 后都是文本,工具不保留类型信息。如果对方 XSD 对 xs:integer 和 xs:string 校验严格,转完要人工确认。
第四,含特殊字符的文本字段。工具会做基本的 &、< 转义,但 CDATA 段不会自动生成。字段里有大段 HTML 时,转出来的内容会被转义成实体,对方解析后拿到的不是原始标签。
搭配哪些工具更顺手?
转完的 XML 如果还要校验格式,可以先用 XML 格式化工具把缩进统一,再贴进编辑器比对,比在转换结果里直接看层级清楚。
如果是反向流程,从 XML 提取数据做分析,可以配合 JSON 格式化工具把转换结果展开成可折叠树,快速定位深层字段。两个工具都在同一站点,来回切不用重新找入口。
最后提醒一句:JSON 转 XML 是结构翻译,不是协议适配。它能替你省掉手写标签和转义检查的机械劳动,但命名空间、类型约束、CDATA 这些协议细节,仍然要回到对方接口文档里逐条核对。把工具放在对的位置,它才真的省时间。