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
我正在尝试使用流变量的内容在 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