我正在研究m子3.9。在工作时,我遇到了一个场景,我想从传入的JSON数组列表中生成所有可能的价位组合。 json数组列表下的值是动态的。
我想生成xml格式的输出。我只想使用dataweave来实现。请帮助我如何使用datawevae在mule 3.9中实现此目标。
下面是我的JSON输入和必需的xml输出。
注意:杰森(Json)拖欠清单是动态的
JSON输入
"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>
答案 0 :(得分:2)
假设您的两个列表始终是building
和content
,并且它们是有效负载(或某些变量)的元素,则可以使用以下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>