Dataweave 中的动态映射

Dynamic mapping in Dataweave

我正在尝试使用流变量的内容在 Dataweave 中动态映射列名称。我想要实现的静态版本看起来像:

payload map ((payload01 , indexOfPayload01) -> {
    COLUMNA: payload01.INPUTA
})

现在我需要动态的部分是 INPUTA - 我需要 A 从在 Dataweave 组件之前设置的流变量派生。我试过类似的东西:

payload map ((payload01 , indexOfPayload01) -> {
    COLUMNA: payload01.INPUT#flowVars['varName']
})

但是我收到 com.mulesoft.weave.grammar.InvalidNamespacePrefixException 错误。

这在Dataweave中可以实现吗?似乎找不到任何相关文档来描述如何操作。

尝试像 MEL 方式一样访问 flowVar:#[flowVars.varName],不要使用 payload01

作为前缀

像下面这样使用它。请注意 key 周围的括号非常重要,因为 () 告诉 DataWeave 首先在其中执行脚本,然后将结果用作外部表达式的值。

    payload map ((payload01 , indexOfPayload01) -> {
    COLUMNA: payload01[('INPUT' ++ flowVars.varName)]
})

告诉我这行不通。

我看到您的密钥名称是 COLUMNA,您也可以使用 () 将 varName 附加到密钥。

您必须从 Dataweave 访问如下所示的流变量或会话变量。 flowVars.varName sessionVars.varName

您可以使用各种 Dataweave 运算符来形成最终的字段名称或值。 了解 Dataweave 运算符对于充分利用 Dataweave 组件至关重要。请通过下面的 link 了解 Dataweave 运算符。

https://docs.mulesoft.com/mule-user-guide/v/3.8/dataweave-operators