Dynamic Dataweave中的动态映射

Dynamic Dataweave中的动态映射,dynamic,mule,dataweave,Dynamic,Mule,Dataweave,我试图使用流变量的内容在Dataweave中动态映射列名。我试图实现的目标的静态版本如下所示: payload map ((payload01 , indexOfPayload01) -> { COLUMNA: payload01.INPUTA }) payload map ((payload01 , indexOfPayload01) -> { COLUMNA: payload01.INPUT#flowVars['varName'] }) 现在,我需要动态的部分

我试图使用流变量的内容在Dataweave中动态映射列名。我试图实现的目标的静态版本如下所示:

payload map ((payload01 , indexOfPayload01) -> {
    COLUMNA: payload01.INPUTA
})
payload map ((payload01 , indexOfPayload01) -> {
    COLUMNA: payload01.INPUT#flowVars['varName']
})
现在,我需要动态的部分是
INPUTA
——我需要
A
从Dataweave组件之前设置的流变量派生出来。我试过这样的方法:

payload map ((payload01 , indexOfPayload01) -> {
    COLUMNA: payload01.INPUTA
})
payload map ((payload01 , indexOfPayload01) -> {
    COLUMNA: payload01.INPUT#flowVars['varName']
})
但是我得到了一个
com.mulesoft.weave.grammar.invalidNamespacePrefixexException
错误


这在Dataweave中是否可能实现?似乎找不到任何描述如何访问flowVar的相关文档。

尝试像MEL那样访问flowVar:
#[flowVars.varName]
,不要像下面那样使用它。请注意键周围的括号,这一点非常重要,因为()告诉DataWeave首先在其内部执行脚本,然后将结果用作外部表达式的值

    payload map ((payload01 , indexOfPayload01) -> {
    COLUMNA: payload01[('INPUT' ++ flowVars.varName)]
})
让我知道那不行


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

从Dataweave您必须访问下面给出的FlowVar或会话Var。 flowVars.varName sessionVars.varName

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


这不起作用-我要做的是从入站负载映射到列,
INPUTA
,问题是,
A
部分可能会根据环境而变化,因此我宁愿在映射是动态的情况下创建一个单独的转换器,而不是基于变量编写不同Dataweave转换器和路由的负载。我需要映射到
payload01.输入[此处动态文本-来自变量]
此操作有效-非常感谢!必须进行一个小的更正,在映射的末尾有一个未使用的
。我把它改成:
COLUMNA:payload01[('INPUT'++flowVars.varName)]
噢,是的。起初,我将[]的所有内容包装在括号中,但后来删除了它,因为它不需要,肯定忘记了结尾部分。更正了答案。很高兴它成功了!