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

Rearrange the list of maps using Mule data weave

我的输入是地图列表。

例如:

> [ { "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"
}
]

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

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

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

希望对您有所帮助。

您可以使用以下内容:

%dw 1.0 %输出application/json

%var 索引 = 1

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

您提供的输入似乎有问题。 [ { "key1" : "val1", "key2" : ["item1","item2"], "key3" : "obj1" }, { "key1" : "val2", "key2" : ["item3","item4","item5"], "key3" : "obj2" } ] 这应该是正确的要求。

由于 key2 是一个数组,您应该使用 map 运算符遍历它并形成您希望的 json 最终对象