使用Mule数据映射器将多个输入转换为一个输出
朋友们 我有两个输入,A和B,都是JSON。 我需要使用DataMapper生成一个JSON格式的单一输出(自定义) 例如: 我的输入A:使用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": "
{
"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="{"country": "Brazil","city": "Rio de Janeiro"}"
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="#['{"country": "Brazil", "city": "Rio de Janeiro"}']" 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="#['{"country": "Brazil", "city": "Rio de Janeiro"}']" 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数据映射器。