Добавьте flowVars (Map) на карту JSON с помощью Dataweave Transformation
Я пытаюсь добавить объект карты Java в элемент списка JSON
Карта Java
{PARAMROWKEYVALUE3=PARAMROWVALUEVAL3, PARAMROWKEYVALUE4=PARAMROWVALUEVAL4}
на OBJECT2 карту JSON ниже
{
"root": {
"OBJECT1": {
"PARAM1": "PARAM1VALUE",
"PARAM2": "PARAM2VALUE"
},
"OBJECT2": [{
"KEY": "PARAMROWKEYVALUE1",
"VALUE": "PARAMROWVALUEVAL1"
}, {
"KEY": "PARAMROWKEYVALUE2",
"VALUE": "PARAMROWVALUEVAL2"
}],
"OBJECT3": {
"PARAM3": "PARAM3VALUE",
"PARAM4": "PARAM4VALUE"
}
}
}
Пожалуйста, дайте мне знать, как я могу достичь этого, будучи картой в качестве переменной потока.
Заранее спасибо.
1 ответ
Я думаю, что у меня есть ваш ответ, но это не только DataWeave. Поскольку вы хотите добавить карту в другую, компонент будет лучшим выбором. Но DataWeave пригодится для преобразования flowVar. Чтобы сделать это исключительно в DataWeave, вам нужно будет заново отобразить весь объект целиком, как если бы он создавался заново, не имело бы особого смысла. Посмотрите на конфигурацию Mule ниже и просто дайте мне знать, если это то, что вы хотели.
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw"
xmlns:metadata="http://www.mulesoft.org/schema/mule/metadata"
xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd
http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd">
<http:listener-config name="HTTP_Listener_Configuration"
host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration" />
<flow name="stackruFlow">
<http:listener config-ref="HTTP_Listener_Configuration"
path="/" doc:name="HTTP" />
<set-variable variableName="map"
value="#[[["PARAMROWKEYVALUE3":"PARAMROWVALUEVAL3"], ["PARAMROWKEYVALUE4":"PARAMROWVALUEVAL4"]]]"
doc:name="Variable" />
<dw:transform-message metadata:id="283a0aba-e3dc-4d86-8cdf-0a90afd259f5"
doc:name="Transform Message">
<dw:input-variable doc:sample="list_UserDefined.dwl"
variableName="map" />
<dw:set-variable variableName="map"><![CDATA[%dw 1.0
%output application/java
---
flowVars["map"] map
{
"KEY": ($ pluck $$ as :string)[0],
"VALUE": ($ pluck $ as :string)[0]
}]]></dw:set-variable>
</dw:transform-message>
<set-payload
value="{"root": { "OBJECT1": { "PARAM1": "PARAM1VALUE", "PARAM2": "PARAM2VALUE" }, "OBJECT2": [{ "KEY": "PARAMROWKEYVALUE1", "VALUE": "PARAMROWVALUEVAL1" }, { "KEY": "PARAMROWKEYVALUE2", "VALUE": "PARAMROWVALUEVAL2" }], "OBJECT3": { "PARAM3": "PARAM3VALUE", "PARAM4": "PARAM4VALUE" }}}"
encoding="UTF-8" mimeType="text/json" doc:name="Set Payload" />
<json:json-to-object-transformer
returnClass="java.util.Map" encoding="UTF-8" mimeType="text/json"
doc:name="JSON to Object" />
<expression-component doc:name="Expression"><![CDATA[payload.root.OBJECT2.addAll(flowVars.map)]]></expression-component>
<object-to-string-transformer doc:name="Object to String" />
</flow>
</mule>