Добавить flowVars (Map) на карту JSON с помощью преобразования Dataweave

Я пытаюсь добавить объект Java Map в элемент списка 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"
    }
}
}

Пожалуйста, дайте мне знать, как я могу этого добиться, используя карту как переменную потока.

Заранее спасибо.


person user1541472    schedule 01.03.2016    source источник


Ответы (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="stackoverflowFlow">
        <http:listener config-ref="HTTP_Listener_Configuration"
            path="/" doc:name="HTTP" />
        <set-variable variableName="map"
            value="#[[[&quot;PARAMROWKEYVALUE3&quot;:&quot;PARAMROWVALUEVAL3&quot;], [&quot;PARAMROWKEYVALUE4&quot;:&quot;PARAMROWVALUEVAL4&quot;]]]"
            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="{&quot;root&quot;: {    &quot;OBJECT1&quot;: {        &quot;PARAM1&quot;: &quot;PARAM1VALUE&quot;,        &quot;PARAM2&quot;: &quot;PARAM2VALUE&quot;    },    &quot;OBJECT2&quot;: [{        &quot;KEY&quot;: &quot;PARAMROWKEYVALUE1&quot;,        &quot;VALUE&quot;: &quot;PARAMROWVALUEVAL1&quot;    }, {        &quot;KEY&quot;: &quot;PARAMROWKEYVALUE2&quot;,        &quot;VALUE&quot;: &quot;PARAMROWVALUEVAL2&quot;    }],    &quot;OBJECT3&quot;: {        &quot;PARAM3&quot;: &quot;PARAM3VALUE&quot;,        &quot;PARAM4&quot;: &quot;PARAM4VALUE&quot;    }}}"
            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>
person Pablo Alberto Camino    schedule 06.03.2016