Mule 如何检查有效负载内的空阵列?

Mule 如何检查有效负载内的空阵列?,mule,mule-component,dataweave,mule-esb,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.details

我试图有一个选择条件,根据数组是否为空运行流

例如:

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).

我正在寻找用于检查此数组的空和空的代码段

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

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

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


@Sandeep,你可以试试

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

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

#[payload.data.detailsSearch == empty]

谢谢你的帮助,瑞安!当我们使用3.9Hi@Ralph Rimorin时,请您共享Mule 3代码段,当我在数据库选择后检查负载时,此语法失败,因为如果没有记录,数据库将返回“[]”。