在dataweave中为数组添加null检查

时间:2017-10-08 16:27:10

标签: arrays json xml mule dataweave

我正在将json转换为xml,我正在为该数组添加一个内部数组的数组,我无法为内部数组设置null检查,在dataweave中获取脚本错误,我附加了示例Json请求和XML响应

{"test":[ {
                   "GroupId": "3",
                  "forms": [{
                           "formId": "2"
                    } ]
    },
 {   "GroupId": "3"
           ]
    } ]}

和我正在生成的这个样本xml

<test>
<myforms>
<GroupId>3</GroupId>
<formId>2</formId>
</myforms>
<myforms>
<GroupId>7</GroupId>
<formId>8</formId>
</myforms>
</test>

和我的DW脚本在

之下
%dw 1.0
%output application/xml
---
{
    (test: {
        (payload.test map {
            myforms: {
                GroupId: $.GroupId as :number,

                (($.forms map {

                    formId:$.formId

                })) when payload.test.forms !=null



            }
        })
    }) when payload.test !=null
}

问题: - 我无法对内部数组进行空检查,即当payload.test.forms!= null时 它抛出一个脚本错误,在带有dataweave错误标记的快照下面,请告诉如何设置内部数组循环的null检查

enter image description here

2 个答案:

答案 0 :(得分:1)

由于您的语法原因,您会收到此类错误 你可以尝试($.forms default [] map { formId:$.formId }) ,像这样:

{{1}}

这将有助于获得预期的结果

答案 1 :(得分:0)

请尝试以下代码: -

%dw 1.0
%output application/xml
---
{
    test : {
         (payload.test map {
            myforms : {
                GroupId: $.GroupId as :number,
                 ($.forms default [] map {

                   formId : $.formId

                })
            }
        })
    }
}