Mule 使用dataweave显示嵌套集合
我想显示以下输出(json),输入来自pl/sql游标, 我的问题是:Mule 使用dataweave显示嵌套集合,mule,dataweave,Mule,Dataweave,我想显示以下输出(json),输入来自pl/sql游标, 我的问题是: 如何显示此输出 要获得此输出,需要什么样的输入 如何使用personId键组合两个光标结果 多谢各位 输入: personCursor: [{personName=a,personId=1}, {personName=b,personId=2}] *contactCursor* [{personId=1, firstName==x, phone=123}, {personId=1, firstName==y, phone=
personId
键组合两个光标结果personCursor:
[{personName=a,personId=1}, {personName=b,personId=2}]
*contactCursor*
[{personId=1, firstName==x, phone=123}, {personId=1, firstName==y, phone=234}, {personId=2, firstName==z, phone=345},{personId=2, firstName==w, phone=456}]
**output:**
[
{
"personName": "a",
"personId": "1",
"contacts":
[
{
"firstname": "x",
"phone": 123
},
{
"firstname": "y",
"phone": 234
},
]
},
{
"personName": "b",
"personId": "2",
"contacts":
[
{
"firstname": "z",
"phone": 345
},
{
"lastname": "w",
"phone": 456
},
]
}
]
为了获得输出,您必须使用脚本,例如
%dw 1.0
%output application/json
%var contactLookup = payload groupBy $.personId
---
flowVars.PersonCursor map {
($),
contacts : contactLookup[$.personId]
}
其中有效载荷为contactCursor
和flowVars.PersonCursor
为PersonCursor
。给定的代码将使用Hashmap查找组合数据。在pl/sql游标的情况下,输入将是java
HTH另一种方法是,您可以使用2个映射运算符并在数组中循环,构造输出Json以及过滤条件,将联系人与正确的人关联起来。 应该是下面几行的内容:
PersonCursor map(v1,i1) {
personName": $.personName,
"personId": $.personId,
contacts : contactCursor map {
"firstname": $.firstname,
"phone": $.phone
} filter $.personId == v1.personId
}
contactCursor和flowVars.PersonCursor的数据类型是什么?我将两者都设置为json,它只适用于第一个PersonCursor记录,获得以下输出:{“输出”:[{“personName”:“a”,“personId”:1,“联系人”:[{“personId”:1,“firstName”:“x”,“phone”:123},{“personId”:1,“firstName”:“y”,“phone”:234}]},{“personName”:“b”,“personId”:2,“contacts”:null}]}Json以及java都可以。但如果您得到的响应是迭代器,则将代码更改为
%var contactLookup=payload map$groupBy$。personId