Mule 使用dataweave从两个json数组列表生成所有可能的组合
我正在研究mule 3.9。在工作中,我遇到了一个场景,我想从传入的JSON数组列表生成所有可能的值组合。json数组列表下的值是动态的 我想以xml格式生成输出。我只想使用dataweave实现这一点。请帮助我如何使用datawevae在mule 3.9中实现这一点 下面是我的JSON输入和所需的xml输出 注意:Json数组列表是动态的 JSON输入Mule 使用dataweave从两个json数组列表生成所有可能的组合,mule,dataweave,mule-esb,Mule,Dataweave,Mule Esb,我正在研究mule 3.9。在工作中,我遇到了一个场景,我想从传入的JSON数组列表生成所有可能的值组合。json数组列表下的值是动态的 我想以xml格式生成输出。我只想使用dataweave实现这一点。请帮助我如何使用datawevae在mule 3.9中实现这一点 下面是我的JSON输入和所需的xml输出 注意:Json数组列表是动态的 JSON输入 "building":[ { "code":"BuildingExcess", "v
"building":[
{
"code":"BuildingExcess",
"value":"600"
},
{
"code":"BuildingExcess",
"value":"700"
}
],
"content":[
{
"code":"ContentExcess",
"value":"600"
},
{
"code":"ContentExcess",
"value":"400"
}
]
输出
<resultset>
<list>
<Building>
<code>BuildingExcess</code>
<value>600</value>
</Building>
<Content>
<code>ContentExcess</code>
<value>600</value>
</Content>
</list>
<list>
<Building>
<code>BuildingExcess</code>
<value>700</value>
</Building>
<Content>
<code>ContentExcess</code>
<value>600</value>
</Content>
</list>
<list>
<Building>
<code>BuildingExcess</code>
<value>600</value>
</Building>
<Content>
<code>ContentExcess</code>
<value>400</value>
</Content>
</list>
<list>
<Building>
<code>BuildingExcess</code>
<value>700</value>
</Building>
<Content>
<code>ContentExcess</code>
<value>400</value>
</Content>
</list>
</resultset>
假设您的两个列表始终是
构建
和内容
,并且它们是有效负载的元素(或某些变量),您可以使用以下dataweave代码来实现所需的输出:
%dw 1.0
%output application/xml
%var input = {
"building":[
{
"code":"BuildingExcess",
"value":"600"
},
{
"code":"BuildingExcess",
"value":"700"
}
],
"content":[
{
"code":"ContentExcess",
"value":"600"
},
{
"code":"ContentExcess",
"value":"400"
}
]
}
---
resultset: {(
flatten (input.content map ((cont) -> input.building map
list: {
Building: $,
Content: cont
})
)
)}
输出:
<?xml version='1.0' encoding='windows-1252'?>
<resultset>
<list>
<Building>
<code>BuildingExcess</code>
<value>600</value>
</Building>
<Content>
<code>ContentExcess</code>
<value>600</value>
</Content>
</list>
<list>
<Building>
<code>BuildingExcess</code>
<value>700</value>
</Building>
<Content>
<code>ContentExcess</code>
<value>600</value>
</Content>
</list>
<list>
<Building>
<code>BuildingExcess</code>
<value>600</value>
</Building>
<Content>
<code>ContentExcess</code>
<value>400</value>
</Content>
</list>
<list>
<Building>
<code>BuildingExcess</code>
<value>700</value>
</Building>
<Content>
<code>ContentExcess</code>
<value>400</value>
</Content>
</list>
</resultset>
假设您的两个列表始终是
构建
和内容
,并且它们是有效负载的元素(或某些变量),您可以使用以下dataweave代码来实现所需的输出:
%dw 1.0
%output application/xml
%var input = {
"building":[
{
"code":"BuildingExcess",
"value":"600"
},
{
"code":"BuildingExcess",
"value":"700"
}
],
"content":[
{
"code":"ContentExcess",
"value":"600"
},
{
"code":"ContentExcess",
"value":"400"
}
]
}
---
resultset: {(
flatten (input.content map ((cont) -> input.building map
list: {
Building: $,
Content: cont
})
)
)}
输出:
<?xml version='1.0' encoding='windows-1252'?>
<resultset>
<list>
<Building>
<code>BuildingExcess</code>
<value>600</value>
</Building>
<Content>
<code>ContentExcess</code>
<value>600</value>
</Content>
</list>
<list>
<Building>
<code>BuildingExcess</code>
<value>700</value>
</Building>
<Content>
<code>ContentExcess</code>
<value>600</value>
</Content>
</list>
<list>
<Building>
<code>BuildingExcess</code>
<value>600</value>
</Building>
<Content>
<code>ContentExcess</code>
<value>400</value>
</Content>
</list>
<list>
<Building>
<code>BuildingExcess</code>
<value>700</value>
</Building>
<Content>
<code>ContentExcess</code>
<value>400</value>
</Content>
</list>
</resultset>