Как сделать это отображение данных dataweave(Mulesoft)

Адрес 1.Street: если ABC пуст и заполнен ZXY, отобразите ZXY 2.Street Address UC: если заполнены оба ZXY и ABC и ABC не начинается с 'PO BOX', 'PO BOX', 'BP' или ' ПОСТБУСЬ, Карта Азбуки; в противном случае MAP ZXY 3.Street Address: если заполнен P08 ABC и ZXY пуст, только MAP ABC.

Мне удалось отобразить 1-е условие и 3-е состояние, как показано ниже, но я не уверен, как сделать второе.

{
ADDRESS_LINE1:ABC
   } when ABC != ""
     otherwise
     {

     ADDRESS_LINE1:ZXY
     }

1 ответ

Попробуйте это... это должно работать.

Вы можете вложить, когда.. иначе, как вы бы делали на любом языке.

%dw 1.0
%output application/java
---
{
    'Address': (payload.addr.ABC when (payload.addr.ABC[0..5] != 'PO BOX' 
                                        and payload.addr.ABC[0..7] != 'P.O. BOX') otherwise payload.addr.XYZ)
                    when (payload.addr.ABC != '' 
                            and payload.addr.XYZ != '')
                    otherwise (payload.addr.ABC when payload.addr.ABC != '' otherwise payload.addr.XYZ)

}

Я проверил с вводом образца -

<?xml version='1.0' encoding='UTF-8'?>
<addr>
    <ABC>P.O. BOX 123</ABC>
    <XYZ>DEFG</XYZ>
</addr>
Другие вопросы по тегам