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

How to check for empty array inside a payload ?

我正在尝试有一个选择条件,在该条件下我将 运行 流取决于数组是否为空。

示例:

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

在 Mule 4 中,您可以在选择路由器中使用 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]

桑迪普,

这个 MEL 应该可以工作。在此之前,要像这样提取数据,您应该将 json 转换为 java.util.HashMap 对象。

#[payload.data.detailsSearch == empty]