JSON 结构会怎样映射为 XML?
| JSON 结构 | XML 结果 | 说明 |
|---|---|---|
{"name":"张三"} | <name>张三</name> | 基础值默认成为子元素文本。 |
{"items":[1,2]} | <items><item>1</item>...</items> | 数组外层保留字段名,元素名由“数组元素”设置决定。 |
{"user":{"id":1}} | 嵌套子元素 | 对象层级会保留为 XML 层级。 |
null 或空对象 | 自闭合节点 | 例如 <value />。 |
| 开启属性模式 | 基础字段成为属性 | 嵌套对象仍保留为子元素。 |
根节点和数组元素为什么要自己设置?
JSON 不要求根节点名,XML 必须有且只有一个根元素。不同接口还会规定数组子节点是 item、order 还是其他名称,因此页面把这两个设置暴露出来,避免每次转换后手工批量替换。
默认数组写法
<orders> <item>...</item> </orders>
适合没有既定 XML 契约时快速查看结构。
对接前调整
<Orders> <Order>...</Order> </Orders>
根据对方系统定义,把根节点、大小写和数组元素名改成契约要求。
对接系统前必须检查什么?
- 确认根节点、数组节点、属性与子元素的取舍符合对方接口或 XSD。
- 确认字段名不包含目标系统禁止的字符,必要时补充命名空间前缀。
- 使用对方提供的 schema、样例或测试环境验证,不要只以“XML 能打开”为准。
JSON 到 XML 没有唯一正确映射。当前工具选择稳定、可读的默认结构,但它不知道对方系统的 namespace、XSD、属性顺序和数据类型规则。
常见问题
- JSON 数组会如何转换?
- 数组会包在原字段节点中,每个元素使用你设置的数组元素名,默认是
item。 - 属性模式会把所有字段都变成属性吗?
- 只会把当前对象中的字符串、数字、布尔值和 null 等基础字段作为属性。嵌套对象和数组仍会生成子元素。
- 可以直接用于 SOAP 请求吗?
- 通常还不够。SOAP 常需要 Envelope、命名空间、特定操作节点和 schema 约束,应以服务方 WSDL 或示例报文为准。