【问题标题】:How to do this mapping ind dataweave(Mulesoft)如何进行这种映射 ind dataweave(Mulesoft)
【发布时间】:2016-03-18 08:45:37
【问题描述】:

1.街道地址:如果ABC为空且ZXY填充,则映射ZXY 2.Street Address UC:如果 ZXY 和 ABC 都被填充并且 ABC 不以“PO BOX”开头,则“P.O. BOX'、'BP' 或 'POSTBUS',地图 ABC;否则 MAP ZXY 3.Street Address : 如果 P08 ABC 已填充,ZXY 为空,则仅 MAP ABC。

我已经设法将第一个条件和第三个条件映射如下,但不知道如何做第二个。

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

     ADDRESS_LINE1:ZXY
     }

【问题讨论】:

    标签: mule dataweave anypoint-studio


    【解决方案1】:

    试试这个......它应该可以工作。

    你可以嵌套 when .. 否则就像你在任何语言中所做的那样。

    %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>
    

    【讨论】:

    • !标志不起作用,我能知道 0..5 是做什么的吗??
    • @SatheeshKumar,你看到了什么错误!? [0..5] 是一个字符串范围选择器(如子字符串)。 ABC[0..5] 将返回字符串的前 6 个字符。在文档docs.mulesoft.com/mule-user-guide/v/3.7/… 中查看更多信息。对于我帖子中的上述示例输入,我将 DEFG 作为输出地址,因为 ABC 以 'P.O.盒子'
    猜你喜欢
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 2019-01-03
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    相关资源
    最近更新 更多