在 Dataweave 中动态引用负载字段名称

Dynamically reference payload field names in Dataweave

我正在使用 Anypoint Studio 7.3 和 Mule 4.1。

我希望在转换消息时从 JSON 有效负载动态传递字段名称,因此在第一次调用时我想使用 "cat_name" 字段中的值,当我调用它时第二次我想使用 "dog_name" 字段中的值,因为输出消息结构将相同。所以对于 "cat_name" 我希望 $.(vars.codetest) 被解析为 payload.cat_name 而对于 "dog_name" 我希望 $.(vars.codetest) 被解析作为 payload.dog_name

有办法吗?

%dw 2.0
output application/json
---
(payload distinctBy $.#[vars.codetest]) map ((payload01, indexOfPayload) ->{
    name: $.(vars.codetest)
})

感谢您的帮助

像这样的东西应该可以工作:

%dw 2.0
output application/json
---
payload 
  distinctBy $[vars.codetest]   
  map ((element) -> { name: element[vars.codetest] })

您可能需要在 codeTest 周围加上括号(即 (vars.codetest)),以便在查找之前对其进行评估。