基于 DW 2.0 中的键与值映射/合并两个对象

Map / Merge two object based on Key vs Value in DW 2.0

我正在寻找一种解决方案,以根据对象 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 中是否可行,因为我已经搜索了不同的 map/mapObject 解决方案,但仍然不适合我。欢迎任何解决方案和建议。谢谢!

这可以使用 mapObject() and reference each key using the 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])

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

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