如何在dataweave中获取动态列

问题描述

我吹数组

[ {"FF15974433790786634518": 1 },{"FF15974433790786634518": 2 },{"FF15974433790786634519": 1 }]

如何在 dataweave获取 ["FF15974433790786634518","FF15974433790786634519"]

解决方法

我们可以map每个项目和pluck键。这为我们提供了一个数组数组,因此我们使用 flatMap (相当于 flatten(payload map(...。获得我们的平面键数组后,我们可以 distinctBy 过滤掉重复项。

编辑:正如下面@machaval 所评论的那样,您可以使用 namesOf(它是 pluck 的包装器)使其更加简洁易读。

%dw 2.0
output application/json
---
payload flatMap namesOf($) distinctBy($)

展开时所有这些都在做什么:

%dw 2.0
output application/json
---
flatten(
    payload map (item,index) -> (
        item pluck ((value,key,index) -> key)
    )
) distinctBy ((item,index) -> item)