Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Mule数据映射器将多个输入转换为一个输出_Mule_Mule Studio_Mule El - Fatal编程技术网

使用Mule数据映射器将多个输入转换为一个输出

使用Mule数据映射器将多个输入转换为一个输出,mule,mule-studio,mule-el,Mule,Mule Studio,Mule El,朋友们 我有两个输入,A和B,都是JSON。 我需要使用DataMapper生成一个JSON格式的单一输出(自定义) 例如: 我的输入A: { "name": "John Doe", "age": "40" } { "country": "Brazil" "city": "Rio de Janeiro" } { "customerName": "John Doe", "customerAge": "40", "customerCountry": "

朋友们

我有两个输入,A和B,都是JSON。 我需要使用DataMapper生成一个JSON格式的单一输出(自定义)

例如:

我的输入A:

{
 "name": "John Doe",
 "age": "40"
}
{
    "country": "Brazil"
    "city": "Rio de Janeiro"
}
{
    "customerName": "John Doe",
    "customerAge": "40",
    "customerCountry": "Brazil",
    "customerCity": "Rio de Janeiro"
}
我的输入B:

{
 "name": "John Doe",
 "age": "40"
}
{
    "country": "Brazil"
    "city": "Rio de Janeiro"
}
{
    "customerName": "John Doe",
    "customerAge": "40",
    "customerCountry": "Brazil",
    "customerCity": "Rio de Janeiro"
}
我的自定义输出:

{
 "name": "John Doe",
 "age": "40"
}
{
    "country": "Brazil"
    "city": "Rio de Janeiro"
}
{
    "customerName": "John Doe",
    "customerAge": "40",
    "customerCountry": "Brazil",
    "customerCity": "Rio de Janeiro"
}
它可以使用Mule数据映射器生成此输出?怎么做


当时,我知道DataMapper只使用一个输入。

您需要将一个输入作为有效负载,另一个作为变量

我的有效载荷是

{ “姓名”:“约翰·多伊”, “年龄”:“40” }

我的变量是

{ “国家”:“巴西” “城市”:“里约热内卢” }

请找到下面的样本,我测试和工程

 <flow name="combineFlow">
    <http:listener config-ref="HTTP_Listener_Configuration"
        path="/testings" doc:name="HTTP" />
    <logger message="Coming here " level="INFO" doc:name="Logger" />
    <set-variable variableName="mypayload"
        value="{&quot;country&quot;: &quot;Brazil&quot;,&quot;city&quot;: &quot;Rio de Janeiro&quot;}"
        doc:name="Variable" mimeType="application/json" />

    <logger level="INFO" doc:name="Logger" />

    <dw:transform-message doc:name="Transform Message">
        <dw:set-payload><![CDATA[%dw 1.0
   %output application/json
    ---

{
"customerName": payload.name,
"customerAge": payload.age,
"customerCountry": flowVars.mypayload.country,
"customerCity": flowVars.mypayload.city
}]]></dw:set-payload>
    </dw:transform-message>

</flow>


希望这有助于

与前面的答案稍微相似:您需要将一个输入作为有效负载,另一个作为变量

以下是使用DataMapper的实现(不是DataWeave/Transform消息)

XML

<flow name="genericFlow">
    <http:listener config-ref="HTTP_Listener_Configuration" path="/dm" doc:name="HTTP" allowedMethods="POST"/>
    <set-variable variableName="inputB"
        value="#['{&quot;country&quot;: &quot;Brazil&quot;, &quot;city&quot;: &quot;Rio de Janeiro&quot;}']" mimeType="application/json"
        doc:name="Input B" />
    <data-mapper:transform config-ref="JSON_To_JSON" doc:name="JSON To JSON">
        <data-mapper:input-arguments>
            <data-mapper:input-argument key="inputBjson">#[new org.json.JSONObject(flowVars.inputB)]</data-mapper:input-argument>
        </data-mapper:input-arguments>
    </data-mapper:transform>
    <echo-component doc:name="Echo" />
</flow>
...
<Dictionary>
<Entry id="DictionaryEntry0" input="true" name="inputPayload" output="false" type="object"/>
<Entry id="DictionaryEntry1" input="false" name="outputPayload" output="true" type="object"/>
<Entry dictval.__javaType="org.json.JSONObject" id="DictionaryEntry2" input="true" name="inputBjson" output="false" type="object"/>
</Dictionary>
...
<attr name="melScript"><![CDATA[//MEL
//START -> DO NOT REMOVE
output.__id = input.__id;
//END -> DO NOT REMOVE
output.customerName = input.name;
output.customerAge = input.age;
output.customerCountry = inputArguments.inputBjson.getString("country");
output.customerCity = inputArguments.inputBjson.getString("city");]]></attr>

#[新建org.json.JSONObject(flowVars.inputB)]
GRF

<flow name="genericFlow">
    <http:listener config-ref="HTTP_Listener_Configuration" path="/dm" doc:name="HTTP" allowedMethods="POST"/>
    <set-variable variableName="inputB"
        value="#['{&quot;country&quot;: &quot;Brazil&quot;, &quot;city&quot;: &quot;Rio de Janeiro&quot;}']" mimeType="application/json"
        doc:name="Input B" />
    <data-mapper:transform config-ref="JSON_To_JSON" doc:name="JSON To JSON">
        <data-mapper:input-arguments>
            <data-mapper:input-argument key="inputBjson">#[new org.json.JSONObject(flowVars.inputB)]</data-mapper:input-argument>
        </data-mapper:input-arguments>
    </data-mapper:transform>
    <echo-component doc:name="Echo" />
</flow>
...
<Dictionary>
<Entry id="DictionaryEntry0" input="true" name="inputPayload" output="false" type="object"/>
<Entry id="DictionaryEntry1" input="false" name="outputPayload" output="true" type="object"/>
<Entry dictval.__javaType="org.json.JSONObject" id="DictionaryEntry2" input="true" name="inputBjson" output="false" type="object"/>
</Dictionary>
...
<attr name="melScript"><![CDATA[//MEL
//START -> DO NOT REMOVE
output.__id = input.__id;
//END -> DO NOT REMOVE
output.customerName = input.name;
output.customerAge = input.age;
output.customerCountry = inputArguments.inputBjson.getString("country");
output.customerCity = inputArguments.inputBjson.getString("city");]]></attr>
。。。
...
不要移除
输出。_id=输入。_id;
//结束->不删除
output.customerName=input.name;
output.customerAge=input.age;
output.customerCountry=inputArguments.inputBjson.getString(“国家”);
output.customerCity=inputArguments.inputBjson.getString(“城市”);]>

注意:输入B作为输入参数注册到DataMapper,类型为Object(仅MEL),其类为:
org.json.JSONObject

一个输入将其作为有效负载,另一个使用消息属性并将第二个输入值存储为变量。现在在数据映射器中,使用输入参数字段中的变量并映射它。简单!!希望能有所帮助。

Eu posso utilizar outro componete。Nãoéobrigatório ser数据映射器。