使用Mule数据编织重新排列地图列表

时间:2017-11-21 01:36:56

标签: mule dataweave

我的输入是地图列表。

例如:

> [ { "key1" : "val1", "key2" : [item1,item2], "key3" : "obj1" }, {
> "key1" : "val2", "key2" : [item3,item4, item5], "key3" : "obj2" } ]

key2值可以是一个列表。

欲望输出:

输出应该是具有以下结构的对象列表。

[
{
"key1" : "val1", 
"key2" : "item1",
"key3" : "obj1"
},
{
"key1" : "val1", 
"key2" : "item2"
"key3" : "obj1"
},
{
"key1" : "val2", 
"key2" : "item3",
"key3" : "obj2"
},
{
"key1" : "val2", 
"key2" : "item4"
"key3" : "obj2"
},
{
"key1" : "val2", 
"key2" : "item5"
"key3" : "obj2"
}
]

我如何使用数据编织来做到这一点?

3 个答案:

答案 0 :(得分:0)

您必须在key2上使用嵌套迭代。以下代码工作正常

%dw 1.0
%output application/json
---
flatten (payload map ((parent,pIndex) -> (
    parent.key2 map {
        key1 : parent.key1,
        key2 : $,
        key3 : parent.key3
    }
))) 

希望这有帮助。

答案 1 :(得分:0)

您可以使用以下内容:

%dw 1.0 %输出应用程序/ json

%var index = 1

有效负载图((payload01,indexOfPayload01) - > {          key1:payload01.key1,          key2:payload01 [index] .key2,          key3:payload01.key3        })

答案 2 :(得分:-1)

由于key2是一个arrray,你应该使用map运算符遍历它,并按照你希望的那样形成json final对象