【问题标题】:Mule Dataweave accesing data with wildcardMule Dataweave 使用通配符访问数据
【发布时间】:2018-02-16 14:33:16
【问题描述】:

是否可以在 dataweave 中使用通配符访问数据?

我的有效载荷为 Entry_1_m1,Entry_2_m1,Entry_3_m1 条目将是动态的,可能还有其他条目,如 Entry_1_m2、Entry_2_m2、Entry_3_m2。 因此,无论最后一个数字如何,我都应该能够获得值,即我应该获得 (Entry_1_m*) 的值。在dataweave中可以吗?

%dw 1.0
%input payload application/java
%output application/xml
---
{
    Employee:{
        empRequest:{
            ReqNumber:payload.RequestNumber,
            Reasons:{
                Entry:payload.Entry_1_m1,
                Entry:payload.Entry_2_m1,
                Entry:payload.Entry_3_m1
            }
        }
    }
}

【问题讨论】:

    标签: mule dataweave


    【解决方案1】:

    使用pluck 运算符获取键列表,这将帮助您映射以Entry_1_m 开头的所有字段。以下代码对我有用

    %dw 1.0
    %input payload application/java
    %output application/xml
    %var keys = (payload pluck $$) filter ($ startsWith 'Entry_1_m')
    ---
    {
        Employee:{
            empRequest:{
                ReqNumber:payload.RequestNumber,
                Reasons: {(keys map {
                    Entry:payload[$]
                })}
            }
        }
    }
    

    希望这会有所帮助。

    【讨论】:

    • 但是我有 3 个条目 (Entry_1_m,Entry_2_m,Entry_3_m)...为 3 个条目编写 3 个过滤器不会有影响??因为每个条目只会出现一次,即,条目_1_m2只有一条记录,条目_2_m2只有一条记录,依此类推......而且我只感兴趣,直到条目_3_m
    • 您不必编写 3 个过滤器。只需添加或条件现有一个,这将解决您的问题。类似%var keys = (payload pluck $$) filter (($ startsWith 'Entry_1_m') or ($ startsWith 'Entry_2_m') or ($ startsWith 'Entry_3_m'))
    猜你喜欢
    • 2021-02-23
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 2016-01-21
    • 2016-06-07
    • 1970-01-01
    相关资源
    最近更新 更多