Как проверить наличие пустого массива внутри полезной нагрузки?

Я пытаюсь создать условие выбора, при котором я буду запускать поток в зависимости от того, пуст ли массив.

Пример :

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

Я ищу фрагмент, чтобы проверить наличие пустого и нулевого значения для этого массива


person Sandeep Deshmukh    schedule 08.06.2018    source источник


Ответы (3)


@Sandeep, ты можешь попробовать

#[dw('sizeOf payload.data.detailsSearch')>0]
person Ralph Rimorin    schedule 11.06.2018
comment
Привет, @Ralph Rimorin! Этот синтаксис не работает, когда я проверяю полезную нагрузку после выбора базы данных, потому что база данных возвращает '[]', если нет записей. - person muralidhar gumma; 22.06.2018

В Mule 4 вы можете использовать выражения Dataweave в маршрутизаторе выбора. Если вы используете Mule 4, вы можете использовать синтаксис Dataweave 2.0 и функцию sizeOf:

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

В противном случае, если вы используете Mule 3, вы можете просто использовать синтаксис MEL и java. Вот так:

...

person Ryan Carter    schedule 09.06.2018
comment
Спасибо за помощь, Райан! Не могли бы вы поделиться фрагментом кода Mule 3, поскольку мы используем версию 3.9. - person Sandeep Deshmukh; 11.06.2018

Сандип,

Этот MEL должен работать. Перед этим, чтобы извлечь такие данные, вы должны преобразовать json в объект java.util.HashMap.

#[payload.data.detailsSearch == empty]
person muralidhar gumma    schedule 19.06.2018