JSON XML 转换器
在浏览器中进行 JSON 与 XML 互转。中文键名原样作为元素名;遇到空数组、嵌套数组、XML 属性或混排文本时停止转换并给出具体路径。
- 在浏览器中处理
- 数据不离开你的设备
- 免费 · 无需注册
用微信扫描以下二维码即可分享
示例、说明与常见问题 带实际输出的示例、与同类工具的差别,以及常见问题。
示例
中文键名
XML 1.0 的名称可以使用中文等多数文字,键名原样作为元素名,文本中的 < 与 & 会被转义:
{"订单": {"编号": "A-1001", "收货人": "张三", "备注": "易碎 & 勿压"}}
<?xml version="1.0" encoding="UTF-8"?>
<root>
<订单>
<编号>A-1001</编号>
<收货人>张三</收货人>
<备注>易碎 & 勿压</备注>
</订单>
</root>
数组、null 与空对象
数组按键名重复生成元素,顶层数组使用 item;null 和 {} 都生成空元素:
{"商品": [{"名称": "键盘", "数量": 2}, {"名称": "鼠标", "数量": 1}], "优惠券": null, "扩展": {}}
<?xml version="1.0" encoding="UTF-8"?>
<root>
<商品>
<名称>键盘</名称>
<数量>2</数量>
</商品>
<商品>
<名称>鼠标</名称>
<数量>1</数量>
</商品>
<优惠券></优惠券>
<扩展></扩展>
</root>
JSON 转 XML 何时停止
工具不会为了让 XML 成立而改键名或丢数据,而是不输出 XML,并显示第一个无法转换的位置:
{"2026年": "Q1"}得到无法转换为 XML: $["2026年"]:该名称不能用作 XML 元素名。XML 名称不能以数字开头,也不能包含空格;含:的名称同样拒绝,因为前缀需要命名空间声明,而这种映射写不出声明。{"坐标": [[116.4, 39.9], [121.5, 31.2]]}得到无法转换为 XML: $["坐标"][0]:空数组或嵌套数组无法用重复 XML 元素表示。重复的元素无法标出内层数组在哪里结束。{"标签": []}得到无法转换为 XML: $["标签"]:空数组或嵌套数组无法用重复 XML 元素表示。空数组不会留下任何元素。
XML 转 JSON
<响应>
<状态>成功</状态>
<记录>
<姓名>李四</姓名>
<金额>88.50</金额>
</记录>
<记录>
<姓名>王五</姓名>
<金额>12.00</金额>
</记录>
</响应>
得到(开启格式化输出):
{
"响应": {
"状态": "成功",
"记录": [
{
"姓名": "李四",
"金额": "88.50"
},
{
"姓名": "王五",
"金额": "12.00"
}
]
}
}
两个 记录 合并为数组;88.50 是字符串,末尾的 0 保留。
XML 转 JSON 何时停止
<响应><记录 id="7">…</记录></响应>得到无法转换为 JSON: /响应/记录[1]/@id:当前 JSON 映射无法表示 XML 属性。把属性值改写成子元素后再转换。<说明>请在 <b>3 日内</b> 付款</说明>得到无法转换为 JSON: /说明:当前 JSON 映射无法表示文本与子元素混排。
路径中的序号按同名元素从 1 开始计数,记录[2] 是父元素下的第二个 记录。
限制
- XML 转 JSON 的值都是字符串。XML 没有数字和布尔类型,
<数量>2</数量>变成“2”。空元素变成"",所以 JSON 的null和{}往返一次后都是""。 - 一个子元素和多个子元素的结构不同。只有一个
记录时得到对象,两个以上得到数组,读取 JSON 的代码要两种都处理。 - 叶子元素的文本原样保留,包括首尾的空格和换行;只有子元素之间的空白会被忽略。注释和处理指令跳过。
- 属性、命名空间声明和混排文本会让转换停止(见上文),工具不提供
@id这类属性映射。 - XML 语法错误的提示来自浏览器的解析器,Chrome、Firefox、Safari 的措辞不同。只想缩进或压缩 XML 时,用 XML 格式化工具。
JSON 与 XML
JSON 是 REST API 和 Web 服务的常用数据格式,简洁、可读、各语言原生支持。 XML 在企业系统、SOAP API、配置文件(Maven、Spring)和文档格式(SVG、XHTML、RSS)中仍被广泛使用。 对接两种格式的系统时,可以用本工具先看一份数据在另一种格式里的样子,并找出无法对应的结构。
FAQ
JSON 转 XML 的规则是什么?
对象的每个键变为同名子元素,值变为文本;数组生成多个同名元素;null 和空对象生成空元素。键名不是合法 XML 名称、或者数组为空或嵌套时,工具不输出 XML,并显示第一个问题的路径,例如 $["m"][0]。
XML 转 JSON 的规则是什么?
工具用浏览器内置的 DOMParser 解析 XML。叶子元素变为字符串,子元素变为对象的键,同名兄弟元素合并为数组,根元素名作为顶层键。子元素之间的空白忽略,注释跳过,CDATA 按文本处理。
根元素名有什么用?
XML 需要一个根元素包裹全部内容。JSON 转 XML 时使用这个名称(默认 root),它必须是合法的 XML 名称,例如 "123 data" 会让转换停止。XML 转 JSON 时不使用该选项,以 XML 实际的根元素名为准。
支持 XML 属性吗?
不支持,但也不会悄悄丢掉。XML 转 JSON 遇到第一个属性就停止并给出位置,例如 /catalog/book[1]/@id。命名空间声明(xmlns、xmlns:x)同样是属性。需要转换时,先把属性改写成子元素。JSON 转 XML 不会生成属性。
我的数据会上传到服务器吗?
不会。所有转换都在浏览器中完成,数据不会离开你的设备。