mule有效载荷在flowVars(信息数据)中
[
{
"status": "submitted",
"identity": "",
"papers": {
"code1": "12csd3cbsdj",
"code2": "skd02nd28dn",
"date": "2016-06-22",
"party": {
"due_date": "2016-06-22",
"personel": {
"email": "tt@test.com",
"value": {
"amount": "0.10",
"inflation": "HIGH"
}
}
}
}
}
]
Inside Dataweave, (1)如何拆除方括号? (2)如何动态替换金额和通胀值(来自flowVars)?
答案 0 :(得分:0)
问题2:您可以直接在数据编织中使用flowVars,或者如果值在url中,您可以使用inboundProperties
动态设置值。请参阅:https://docs.mulesoft.com/mule-user-guide/v/3.7/dataweave-reference-documentation
我使用了set变量,你可以在其中动态地确定它。在此流程中使用的测试网址:http://localhost:8083/test?inflation=HIGH
<flow name="testFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP">
</http:listener>
<logger level="INFO" doc:name="Logger"/>
<set-variable variableName="dynamicValueAmount" value="#['2']" doc:name="Variable"/>
<dw:transform-message doc:name="Transform Message">
<dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
[
{
"status": "submitted",
"identity": "",
"papers": {
"party": {
"due_date": "2016-06-22",
"personel": {
"email": "tt@test.com",
"value": {
"amount": flowVars.dynamicValueAmount,
"inflation": inboundProperties.'http.query.params'.inflation
}}}}}
]]]></dw:set-payload>
</dw:transform-message>
<object-to-string-transformer doc:name="Object to String"/>
<set-payload value="#[ message.payload =org.mule.util.StringUtils.replace(message.payload,"[","{");message.payload =org.mule.util.StringUtils.replace(message.payload,"]","}")]" doc:name="Set Payload"/>
<logger level="INFO" doc:name="Logger"/>
</flow>
关于问题一,我在set Payload中设置了外部替换功能(工作正常 - 其他方式)。我相信它可以通过使用Dataweave本身以标准方式实现。让我们等待答案。
答案 1 :(得分:0)
我已经解决了问题#1
%dw 1.0
%output application/java
---
{
data:flowVars.infodata replace /(\[|\])/ with ""
}
我仍在尝试了解如何动态更改问题#2的有效负载内容。
答案 2 :(得分:0)
flowVars.infodata map {}
或只获取第一个对象data: flowVars.infodata[0]
。