Dynamic Dataweave中的动态映射
我试图使用流变量的内容在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'] }) 现在,我需要动态的部分
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)]
噢,是的。起初,我将[]的所有内容包装在括号中,但后来删除了它,因为它不需要,肯定忘记了结尾部分。更正了答案。很高兴它成功了!