【问题标题】:Map / Merge two object based on Key vs Value in DW 2.0在 DW 2.0 中基于 Key vs Value 映射/合并两个对象
【发布时间】:2021-10-04 21:53:55
【问题描述】:

我正在寻找基于对象 A 中的值与对象 B 中的键合并或所谓的映射或将对象组合到另一个对象中的解决方案。例如:

变量:

    {
       "Column 1": "First Name",
       "Column 2": "Last Name",
       "Column 3": "ID",
       "Column 4": "Contact"
    }

有效载荷:

    {
       "ID": "1234",
       "First Name": "Tom",
       "Last Name": "Jerry"
    }

预期输出:

    {
       "Column 1": "Tom",
       "Column 2": "Jerry",
       "Column 3": "1234",
       "Column 4": ""
    }

请参阅上面的示例,我使用一个变量作为我的“模板”,我想将我的有效负载映射到其中,如示例输出所示。如果未找到该字段(例如第 4 列:联系人),则它可以默认为“”或 null。

我不确定这在 DW 中是否可行,因为我已经搜索了不同的地图/地图对象解决方案,但仍然不适用于我。欢迎任何解决方案和建议。谢谢!

【问题讨论】:

    标签: dataweave mule4


    【解决方案1】:

    这可以使用mapObject() 轻松实现,并使用dynamic selector 引用每个键:

    %dw 2.0
    output application/json
    var referenceVar={
       "Column 1": "First Name",
       "Column 2": "Last Name",
       "Column 3": "ID",
       "Column 4": "Contact"
    }
    ---
    referenceVar mapObject ((value, key, index) -> (key): payload[value])
    

    “Column 4”将输出 null,因为它在有效负载中没有该键的值。如果您喜欢输出一个空字符串 (""),您可以使用默认值:

    referenceVar mapObject ((value, key, index) -> (key): payload[value] default "")
    

    【讨论】:

    • 谢谢!这就是这么简单,为什么我早点想到这个......
    猜你喜欢
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    相关资源
    最近更新 更多