1

这个问题涉及到 Mule 的 MEL 和正则表达式。我有以下 JSON 有效负载。

    {
       "balance": "{Amount={BasicAmount=604.45, MinimumAmount=60 445, CurrencyCode=USD}}"
    }

我能够访问由 balance 表示的字符串

    {Amount={BasicAmount=604.45, MinimumAmount=60 445, CurrencyCode=USD}}

我需要将浮点数 604.45 作为字符串访问,并将其作为流变量应用。因此,我在我的 mule 应用程序中实现了以下代码。

    <set-variable variableName="balanceUnrefined" value="#[json:balance]" doc:name="balanceUnrefined"/>
    <logger message="#[flowVars.balanceUnrefined]" level="INFO" doc:name="Logger"/>
    <set-variable variableName="balanceRefined" value="#[regex('\\d+\\.\\d+'.toString(), flowVars.balanceUnrefined)]" doc:name="balanceRefined"/>
    <logger message="#[flowVars.balanceRefined]" level="INFO" doc:name="Logger"/>

最后一个记录器的结果表明为空。我做错了什么?是正则表达式吗?

4

2 回答 2

1

在我们的讨论之后:

也使用该scan功能。它返回 aList<String>所以你必须拿第一个。它适用于 dw 2.0 上的正则表达式,所以应该在 de 1.0 中使用。

我的骡子 4 mule-config.xml

<ee:set-variable variableName="balance"> <![CDATA[ %dw 2.0 output application/json --- scan(vars.regexpVar, /\d+\.\d+/)[0] ]]> </ee:set-variable> </ee:variables> </ee:transform> <logger doc:id="b458c5f0-5360-40f4-b68c-b5cf1e48da51" doc:name="Logger" doc:timestamp="1518874066833" message="#[vars.balance]"/>

在这里我的结果日志:

在此处输入图像描述

于 2018-02-16T18:57:12.663 回答
1

我不得不使用变压器来使用@shadowsheep 推荐的扫描功能,并感谢他做对了。这适用于 Mule 3.9 和使用 dataweave 1.0

<set-variable variableName="balanceUnrefined" value="#[json:balance]" doc:name="balanceUnrefined"/>
        <set-payload value="#[flowVars.balanceUnrefined]" doc:name="Set Payload"/>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
        <dw:transform-message doc:name="Transform Message">
            <dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
{
	"balance": payload scan /\d+\.\d+/
}
]]></dw:set-payload>
        </dw:transform-message>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>

于 2018-02-18T08:27:07.833 回答