在 DataWeave 中动态访问 FlowVar

Access FlowVar dynamically in DataWeave

我正在尝试在 DataWeave 中动态访问 FlowVar 名称。

例如: 我有一个名为 taxInfo123 的 flowVars。这是一个链表,我的 applicant.ApplicantID = 123

在我的数据编织中,我想动态访问它。类似于以下内容:

"TaxInfo": flowVars.'taxInfo'+applicant.ApplicantID map ((taxIdentificationDetail , indexOfTaxIdentificationDetail) -> {

这显然行不通,我希望这是可能的,我只需要正确的语法。

如果需要动态创建变量名,可以使用flowVars[key]语法代替flowVars.key语法。在您的场景中:

"TaxInfo": flowVars[('taxInfo' ++ (flowVars.applicant.ApplicantID as :string))]

我假设 applicant 也是一个 flowVar,但您可以轻松地使用 payload.applicant.ApplicantID 或任何您需要的情况。我还假设它是一个数字,所以我不得不将它转换为一个字符串。

当您使用此语法时,您要确保将键表达式括在括号中,以便首先对其求值,然后再解析 flowVar。

总结一下:

如果你知道变量名是'taxInfo123' -

flowVars.taxInfo123flowVars[taxInfo123] 均有效

如果需要动态创建变量名 -

flowVars[(expression)]

希望对您有所帮助!

构成变量名需要像++这样的追加运算符。请阅读 Dataweave 运算符的 MuleSoft 文档,以更好地了解 Dataweave 的灵活性。

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