You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决DataWeave 1.0数组转XML时无法强制数组为对象报错

问题原因

DataWeave 1.0的XML序列化规则与2.0存在差异,1.0中不允许直接为XML标签赋值数组,要求标签对应的值必须为对象类型,因此你写的Array: [xxx]逻辑会触发Cannot coerce a :array to a :object报错。

解决方案

修改后的代码如下:

%dw 1.0
%output application/xml encoding="UTF-8", skipNullOn="everywhere"
%namespace soap http://schemas.xmlsoap.org/soap/envelope/
%var targetArray = [
  {Item:"test 1"},
  {Item:"test 2"}
]
---
soap#Body: {
  (targetArray map {
    Array: $
  })
}
实现逻辑

代码中使用小括号包裹数组映射结果是DataWeave 1.0的对象展开语法,会将数组内每个对象的键值对直接合并到父对象中,多个同名的Array键最终会输出为多个重复的<Array>XML标签,输出结果和你预期的DataWeave 2.0输出完全一致。

内容的提问来源于stack exchange,提问作者Cray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:27:04