从 dataweave 2.0 Mule 4 中的父 JSON 对象中提取 JSON 键值对的子集作为对象

Extracting a subset of JSON key-value pairs as an Object from a Parent JSON Object in dataweave 2.0 Mule 4

我有一个 dataweave 挑战,如果不把它弄复杂我就无法弄明白。

输入JSON有效负载

{
   "Name"     : "Mr.wolf",
   "Age"      : 26,
   "Region"   : "USA",
   "SubRegion": "Pacific"
}

需要输出

{
   "Name"     : "Mr.wolf",
   "Age"      : 26
}

这是一个问题。我不允许在转换消息中使用上面显示的输出格式结构,或者使用“-”操作删除密钥。

所以基本上,我们不应该使用下面的 dwl。

%dw 2.0
output application/json
---
(payload - "Region" - "SubRegion")

%dw 2.0
output application/json
---
{
   "Name"     : payload.Name,
   "Age"      : payload.Age
}

我们如何使用 Lambdas、Reduce、mapObject、函数或任何其他选择的操作来实现所需的输出,而不是上面显示的受限 methods/usage。

非常感谢提供的任何解决方案。

听起来 filterObject 适合您。 Documentation

payload filterObject ((value, key) -> (key ~= "Name" or key ~= "Age"))

同一方法的另一种形式。

%dw 2.0
output application/json
---
payload mapObject {
    (($$) : $) if (($$) ~= "Name" or ($$) ~= "Age")
}

这是您要找的吗?

%dw 2.0
output application/json
---
payload filterObject ((value, key,index) -> (index <2 ))

另一个版本是:

%dw 2.0
output application/json
---
payload mapObject {
    (($$) : $) if (($$$) < 2)
}