【问题标题】:How to check for empty array inside a payload ?如何检查有效载荷内的空数组?
【发布时间】:2018-06-08 18:25:13
【问题描述】:

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

例子:

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

我正在寻找 sn-p 来检查这个数组是否为空和 null

【问题讨论】:

    标签: mule mule-component dataweave mule-esb


    【解决方案1】:

    @Sandeep,你可以试试

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

    【讨论】:

    • 嗨@Ralph Rimorin,当我在数据库选择后检查有效负载时,此语法失败,因为如果没有记录,数据库将返回“[]”。
    【解决方案2】:

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

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

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

    ...

    【讨论】:

    • 感谢瑞恩的帮助!我们正在使用 3.9,您能否分享一下 Mule 3 sn-p
    【解决方案3】:

    桑迪普,

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

    #[payload.data.detailsSearch == empty]
    

    【讨论】:

      猜你喜欢
      • 2021-04-13
      • 2018-02-24
      • 2020-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      • 2020-04-21
      • 2022-01-11
      相关资源
      最近更新 更多