API对接字段映射
后端工程师对接第三方支付接口,对方返回JSON格式的订单回调数据,但内部老系统只接受XML报文。手动逐字段改写不仅耗时,还容易漏掉嵌套层级。用本工具一键转换,保留键名和数组结构,直接粘贴到XML解析器里调试,半小时的体力活压缩到10秒。
开发者工具 · JSON / 数据格式
双向互转
后端接口返回的 JSON 结构,前端要解析成 XML 配置文件,手动改容易漏层级或转义错。这个工具把键值对、数组、嵌套对象逐一映射为 XML 节点,支持缩进和编码设置。转换全程在浏览器本地完成,数据不上传服务器——适合接口联调时快速验证结构,或把 API 响应转成 XML 供旧系统消费。
后端工程师对接第三方支付接口,对方返回JSON格式的订单回调数据,但内部老系统只接受XML报文。手动逐字段改写不仅耗时,还容易漏掉嵌套层级。用本工具一键转换,保留键名和数组结构,直接粘贴到XML解析器里调试,半小时的体力活压缩到10秒。
运维人员把AWS Lambda的JSON环境变量迁移到本地自建K8s集群,集群的ConfigMap要求YAML/XML格式。直接手写XML标签容易把引号或缩进搞乱,导致Pod启动失败。把JSON粘贴进来转成XML,再套一层ConfigMap模板,避免因格式错误反复重启容器。
数据分析师拿到一份2003年的客户档案,导出格式是XML,里面嵌套了5层<address><city>标签。想用Python的pandas处理,必须先转成扁平JSON。手动拆标签一天都干不完,用本工具反向转换,保留原始层级关系,再写个脚本拍平,半天工作量变成20分钟。
测试人员抓包发现某个SOAP请求返回的XML里,<result>节点下混入了非法字符,导致客户端解析报错。需要把XML转成JSON,用JSON的格式化工具高亮定位到具体字段,再反向转回XML去修改原报文。本工具的双向转换让排查路径从猜标签变成看键值对。
业务人员用钉钉宜搭收集了300条客户反馈,导出为JSON数组。但公司内部CRM系统的批量导入接口只认XML格式,且要求每条记录用<record>包裹。手动加标签会漏掉转义字符,导致导入失败。直接转成XML后批量替换根节点,省去写中间转换脚本的麻烦。
| 输入 | 输出 | 说明 |
|---|---|---|
| {"name": "张三", "age": 30, "city": "北京"} | <root> <name>张三</name> <age>30</age> <city>北京</city> </root> | 常规:最典型的扁平对象转换,验证键值对映射为子元素 |
| {"users": [{"id": 1, "name": "李四"}, {"id": 2, "name": "王五"}]} | <root> <users> <item> <id>1</id> <name>李四</name> </item> <item> <id>2</id> <name>王五</name> </item> </users> </root> | 常规:数组自动包裹为 <item> 元素,验证嵌套数组处理 |
| {} | <root/> | 边界:空对象,验证自闭合标签输出而非空元素 |
| {"a": null} | <root> <a xsi:nil="true"/> </root> | 边界:null 值处理,验证是否保留属性标记而非忽略 |
| {"price": 99.99, "active": true, "desc": ""} | <root> <price>99.99</price> <active>true</active> <desc/> </root> | 边界:布尔值和空字符串,验证数据类型保留与空串自闭合 |
| {"data": {"nested": {"deep": 42}}} | <root> <data> <nested> <deep>42</deep> </nested> </data> </root> | 易错:深层嵌套对象,验证缩进层级是否正确 |
| {"@id": "123", "xml:lang": "zh"} | <root> <@id>123</@id> <xml:lang>zh</xml:lang> </root> | 易错:XML 保留前缀(@、:)作为键名,验证是否原样输出而非报错 |
1.JSON 字符串用了单引号
{'name': 'Alice', 'age': 30}{"name": "Alice", "age": 30}JSON 标准强制双引号包裹键和字符串值;单引号是 Python/JS 字面量语法,不是 JSON 语法,解析器直接报错
2.键名没有加引号
{name: "Alice", age: 30}{"name": "Alice", "age": 30}JS 对象字面量允许裸键名,但 JSON 要求所有键必须用双引号包裹;缺少引号会被视为语法错误
3.JSON 里写了注释
{
// 用户信息
"name": "Alice"
}{
"name": "Alice"
}JSON 标准不支持注释;// 或 /* */ 在 JSON 解析器中会导致 Unexpected token 错误,需在转换前移除
4.数字或布尔值加了引号
{"count": "123", "active": "true"}{"count": 123, "active": true}JSON 中数字和布尔值不加引号;加引号后变成字符串,转换到 XML 时会被包裹在 <count>123</count> 中,丢失数值类型
5.嵌套层级过深导致 XML 标签名冲突
{"a": {"a": 1}}{"a": {"b": 1}}XML 不允许同一父元素下出现同名兄弟标签(除非用数组);JSON 对象内相同键名嵌套时,转换器可能只保留最后一个值
6.数组元素类型不一致
[1, "two", true][1, 2, 3] 或 ["one", "two", "three"]XML 转换时数组元素会被包裹在 <item> 标签中;混合类型导致生成的 XML 结构混乱,且无法用 XSD 约束
7.JSON 中使用了 undefined 或 NaN
{"value": undefined} 或 {"score": NaN}{"value": null} 或 {"score": 0}undefined 和 NaN 不是 JSON 合法值;JSON.stringify 会忽略 undefined,NaN 会变成 null,导致转换结果与预期不符
8.XML 根元素名称冲突
输入 JSON {"root": {...}} 期望根标签 <data>输入 JSON {"data": {...}} 或使用工具提供的根元素名配置JSON 转 XML 时,最外层对象的键名会成为 XML 根标签名;若键名与 XML 保留字(如 xml)相同,部分解析器会报错
XML = 递归映射(JSON, 根元素名)
JSON输入的 JSON 对象或数组根元素名XML 文档的根标签名称递归映射将 JSON 键转为 XML 标签,值转为内容输入 JSON:{"name":"张三","age":30,"address":{"city":"北京"}},根元素名设为 "person"。递归映射:根标签 <person>,键 name 转为 <name>张三</name>,age 转为 <age>30</age>,address 嵌套为 <address><city>北京</city></address>。最终输出:<person><name>张三</name><age>30</age><address><city>北京</city></address></person>。
能。本工具递归处理 JSON 对象的嵌套结构,每个 JSON 对象对应 XML 的一个父节点,数组对应多个同级子节点。例如 {"a": {"b": [1, 2]}} 会转成 <a><b>1</b><b>2</b></a>。如果 JSON 中有空对象或空数组,会输出空标签。特别深的层级(超过 10 层)在浏览器渲染时可能卡顿,建议分段转换。
XML 标签名不能以数字开头,也不能含空格、冒号等特殊字符(冒号保留给命名空间)。本工具遇到这类 key 时,会自动在前面加 "_" 前缀,例如 "123key" 变成 "_123key",特殊字符替换为下划线。如果原始 key 是 "a:b",会转成 "a_b"。转换后建议检查一遍标签名是否可被下游 XML 解析器接受。
这是 XML 声明,标准 XML 文档的第一行,用于声明版本和编码。本工具默认添加它,让输出符合 XML 规范。如果下游系统不需要(比如要拼接进已有 XML 片段),可以在转换后手动删除第一行。注意:如果 JSON 内容本身包含 XML 不支持的字符(如控制字符),声明中的 UTF-8 编码可能无法保留,此时建议先检查 JSON 数据。
本工具严格保留数组结构——即使只有一项,也会生成一个父标签包裹一个子标签,例如 {"items": ["a"]} 转成 <items><item>a</item></items>,而不是 <items>a</items>。这是为了保持 JSON 数组与 XML 子节点的语义映射一致。如果你需要扁平化输出,建议先在 JSON 侧把单元素数组改为直接值。
基本互逆,但存在边界情况。JSON 的 null 值转 XML 会输出空标签 <tag/>,再次转回 JSON 时变成空字符串 "" 而非 null。JSON 中的数字类型(如 123)转 XML 后变成文本 "123",再转回 JSON 会变成字符串而不是数字。JSON 的布尔值 true/false 同理。所以如果原始数据有类型要求(例如计划 JSON→XML→JSON 来回传),建议在 JSON 侧做好类型标记。
本工具在浏览器端纯前端处理,大文件会消耗较多内存。如果粘贴后页面无响应,建议分块处理:先用 JSON 编辑器(如 jq 或在线工具)把大文件拆成多个几百 KB 的片段,逐个转换后再手动合并 XML。另外,JSON 中如果包含大量重复结构(如 10 万条日志),浏览器 DOM 渲染结果时可能卡顿,此时推荐使用 Node.js 脚本或后端工具批量处理。
本工具默认将 XML 属性视为标签的元数据,不直接映射到 JSON 键值对。例如 <item id="1">text</item> 转成 {"item": "text"},id 属性会被丢弃。如果需要保留属性,可以在转换前手动把属性转为子元素,例如改为 <item><id>1</id>text</item>。或者使用支持属性映射的高级 XML 解析库(如 xmltodict 的 attr_prefix 参数)单独处理。
本工具只接受标准 JSON 对象或数组,不接受 JSON 字符串(即被引号包裹的文本)。如果你从接口复制的是类似 '"{\"a\":1}"' 的转义字符串,需要先在外面解一层转义,还原为真正的 JSON 对象。另外,JSON 字符串中不能有尾随逗号、注释、单引号等非标准格式。如果提示错误,可以先在 JSON 校验器里验证一下格式。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。