如何解决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
相关产品推荐
相关产品推荐

