如何在 XML 和 JSON 之间转换?
Stefan Goessner 在 XML.com 发表过一篇关于 XML 与 JSON 互相转换的文章,并提供了配套的转换脚本,包括 xml2json.js 和 json2xml.js。如果你需要在这两种数据格式之间迁移或做互操作,可以直接使用这套脚本,并在 goessner.net 的下载区获取后续的 bug 修复和更新版本。
转换脚本从哪里获取
根据 goessner.net 上的记录,转换脚本与文章配套发布,入口如下:
- 文章:XML.com 上发表的 Converting Between XML and JSON
- 脚本:
xml2json.js和json2xml.js - 更新:作者提到脚本有若干 bug 修复和更新,具体内容在网站的 download 区
也就是说,先看文章了解转换思路,再去下载区拿最新脚本,是这套资源的正常使用顺序。
两个方向分别对应什么
| 方向 | 脚本 | 输入 | 输出 |
|---|---|---|---|
| XML → JSON | xml2json.js |
XML 结构 | JSON 结构 |
| JSON → XML | json2xml.js |
JSON 结构 | XML 结构 |
两个脚本是独立文件,按你需要转换的方向选用即可,不需要同时引入。
适合用在什么场景
这套转换适合需要在两种数据格式之间迁移或互操作的场景,例如:
- 已有 XML 数据源,但下游程序更习惯处理 JSON
- 已有 JSON 配置或数据,但某个工具或接口只接受 XML
- 在浏览器端或服务端做格式适配时,需要一个轻量的转换脚本
使用时的注意点
- 脚本是 JavaScript 实现,运行环境需要支持 JavaScript。
- 作者明确提到脚本有过 bug 修复和更新,使用前建议先到下载区确认拿到的是较新版本,而不是早期副本。
- XML 与 JSON 的数据模型并不完全一一对应(例如属性、文本节点、数组的表示方式),转换结果是否符合预期,取决于你的具体数据结构,建议先用一小段代表性数据验证再批量使用。
和 JSONPath 的关系
同一网站还提供了 JSONPath,作者把它描述为“XPath for JSON”,用于在 JSON 结构中按路径表达式选取部分内容。如果你的流程是“先把 XML 转成 JSON,再从中取字段”,那么 xml2json.js 负责格式转换,JSONPath 负责在转换后的 JSON 里定位数据,两者可以配合使用。