如何检查有效负载内的空数组?

时间:2018-06-08 18:25:14

标签: mule mule-component dataweave mule-esb

我正在尝试选择条件,我将根据数组为空运行流程。

示例:

Input : {"data":{"detailsSearch":[]}}

我的代码:

1. #[payload.data.detailsSearch*.size() > 0]
2. #[payload.data.detailsSearch*?]

我收到了运行时异常:

org.mule.api.MessagingException: Execution of the expression "payload.data.detailsSearch*.size() > 0" failed. (org.mule.api.expression.ExpressionRuntimeException).

我正在寻找片段来检查此数组的空和null

3 个答案:

答案 0 :(得分:0)

在Mule 4中,您可以在选择路由器中使用Dataweave表达式。如果使用Mule 4,您可以使用Dataweave 2.0语法和sizeOf函数:

<choice>
    <when expression="#[(sizeOf(payload.data.detailsSearch)) > 0]">
        ...     
    </when>
</choice>

否则,如果您使用的是Mule 3,则可以使用MEL和java语法。像这样:

                     ...
             

答案 1 :(得分:0)

@Sandeep,你可以试试

#[dw('sizeOf payload.data.detailsSearch')>0]

答案 2 :(得分:-1)

Sandeep,

此MEL应该有效。在此之前,要提取这样的数据,您应该将json转换为java.util.HashMap对象。

#[payload.data.detailsSearch == empty]