基于 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 "")
我正在寻找一种解决方案,以根据对象 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 "")