Dataweave 2.0 reduce 函数减少 json Mule 的数组
Dataweave 2.0 reduce function to reduce the array of json Mule
我的输入 Json 如下所示:-
[{
"eId": "123",
"eType": "NZ",
"value": [{
"tId": "444"
}, {
"tId": "555"
}
]
}, {
"eId": "456",
"eType": "AU",
"value": [{
"tId": "666"
}
]
}
]
预期输出 Json 如下:
[{
"eId": "123",
"eType": "NZ",
"tId": "444"
}, {
"eId": "123",
"eType": "NZ",
"tId": "555"
}, {
"eId": "456",
"eType": "AU",
"tId": "666"
}
]
我尝试使用如下所示的 reduce 函数进行转换。我没有得到预期的回应
%dw 2.0
output application/json
---
payload reduce ((val, acc = []) ->
acc + {
"id" : val.eId, "type": val.eType, "Tid": val.value map $.tId
})
谁能纠正我哪里做错了
试试这个。
%dw 2.0
output application/json
var inp = payload
---
payload[0].value map {
eId: inp[0].eId,
Tid: $.tId
}
我会做出有根据的猜测,因为示例预期输出不完整,预期输出应该如下所示:
[
{
"eId": "123",
"type": "Co",
"tId": "444"
},
{
"eId": "123",
"type": "Co",
"tId": "555"
}
]
脚本:
%dw 2.0
output application/json
fun mapItem(i) = i.value map { eId: i.eId, "type": i.eType, tId: $.tId }
---
payload flatMap mapItem($)
如有需要,请随时编辑问题以添加更多详细信息。
您可以尝试使用以下数据编织表达式:
%dw 2.0
output application/json
---
flatten(payload map (it1, ix1) ->
it1.value map (it2, ix2) -> {
eId: it1.eId,
eType: it1.eType,
tId: it2.tId
})
更新解决方案
%dw 2.0
output application/json
---
payload flatMap ((item, index) -> {
a: item.value map {
eId:item.eId,
eType: item.eType,
tId: $.tId
}}.a)
我的输入 Json 如下所示:-
[{
"eId": "123",
"eType": "NZ",
"value": [{
"tId": "444"
}, {
"tId": "555"
}
]
}, {
"eId": "456",
"eType": "AU",
"value": [{
"tId": "666"
}
]
}
]
预期输出 Json 如下:
[{
"eId": "123",
"eType": "NZ",
"tId": "444"
}, {
"eId": "123",
"eType": "NZ",
"tId": "555"
}, {
"eId": "456",
"eType": "AU",
"tId": "666"
}
]
我尝试使用如下所示的 reduce 函数进行转换。我没有得到预期的回应
%dw 2.0
output application/json
---
payload reduce ((val, acc = []) ->
acc + {
"id" : val.eId, "type": val.eType, "Tid": val.value map $.tId
})
谁能纠正我哪里做错了
试试这个。
%dw 2.0
output application/json
var inp = payload
---
payload[0].value map {
eId: inp[0].eId,
Tid: $.tId
}
我会做出有根据的猜测,因为示例预期输出不完整,预期输出应该如下所示:
[
{
"eId": "123",
"type": "Co",
"tId": "444"
},
{
"eId": "123",
"type": "Co",
"tId": "555"
}
]
脚本:
%dw 2.0
output application/json
fun mapItem(i) = i.value map { eId: i.eId, "type": i.eType, tId: $.tId }
---
payload flatMap mapItem($)
如有需要,请随时编辑问题以添加更多详细信息。
您可以尝试使用以下数据编织表达式:
%dw 2.0
output application/json
---
flatten(payload map (it1, ix1) ->
it1.value map (it2, ix2) -> {
eId: it1.eId,
eType: it1.eType,
tId: it2.tId
})
更新解决方案
%dw 2.0
output application/json
---
payload flatMap ((item, index) -> {
a: item.value map {
eId:item.eId,
eType: item.eType,
tId: $.tId
}}.a)