(骡子软数据编织1.0)
我想把json中的二级对象和在一起。如果我有这个json值
{
"type": Type1,
"date" :{
"day1" : 1,
"day2" : 2,
"day3" : 3
},
"a" : test
},
{
"type": Type2,
"date" :{
"day1" : 4,
"day2" : 5,
"day3" : 6
},
"a" : test2
}如何在date中求和值,以便输出(totalDate)类似于:
{
"type": Type1,
"totalDate" : 6,
"date" :{
"day1" : 1,
"day2" : 2,
"day3" : 3
},
"a" : test
},
{
"type": Type2,
"totalDate" : 15,
"date" :{
"day1" : 4,
"day2" : 5,
"day3" : 6
},
"a" : test2
}发布于 2021-06-28 14:32:15
Map,pluck,sum (骡子4),reduce (骡子3):
假设您的输入是这样的数组:
[
{
"type": "Type1",
"date" :{
"day1" : 1,
"day2" : 2,
"day3" : 3
},
"a" : "test"
},
{
"type": "Type2",
"date" :{
"day1" : 4,
"day2" : 5,
"day3" : 6
},
"a" : "test2"
}
]编辑:
在数据编织1.0中,我会这样做:
注意:即使在mule应用程序中,输入行也是有效的。将此编辑为错误是不正确的,即使它通常是不必要的。只想避免编辑中的一些错误信息,因为有时有完全正确的理由定义您的输入。据我所知,他正在读取一个文件,并且没有设置mime类型。如果保留这一行,它仍将正确处理。
--在某些情况下,当DataWeave执行本身被上下文化并从所述上下文派生输入时,不需要输入指令。例如,在Mule中,他们的事件概念提供上下文,添加诸如有效负载和vars之类的输入,并提供各自的MIME类型信息。在本节之后,我们将避免输入指令,并在本教程的其余部分假设一个名为“有效负载”的输入。
这里有更多信息:
https://docs.mulesoft.com/mule-runtime/3.9/dataweave-reference-documentation#document-structure
https://docs.mulesoft.com/mule-runtime/3.9/dataweave-reference-documentation#input-directive
%dw 1.0
%input payload application/json
%output application/json
---
payload map {
($),
totalDate: ($.date pluck $) reduce $+$$
}唯一的区别是我不依赖和,因为它不是我可以使用的函数。reduce $+$$意味着我要将累加器默认为数组中的第一个数字,然后将其后的每个数字添加到其中。实际上,3.9个文档也建议这样做:https://docs.mulesoft.com/mule-runtime/3.9/dataweave-operators#reduce提供更详细的说明。
我们可以在每个物体上绘制地图。我们创建一个新对象,然后使用($)将现有对象解构到其中。在那里,我们创建了一个新的字段,它将通过从date对象($.date pluck $)中提取所有值来填充,然后将其抛到一个sum中。
%dw 2.0
output application/json
---
payload map {
($),
totalDate: sum($.date pluck $)
}发布于 2021-07-05 13:54:40
迈克尔的答案也可以修改为..。
%dw 2.0
output application/json
---
payload map ((value, index) ->
{
(value),
totalDate: sum(valuesOf(value.date))
}
)发布于 2021-07-26 18:22:41
只是另一种方法
%dw 2.0
output application/json
---
payload map (v0,k0) ->
{
(v0 ++ (totalDate:(v0.date pluck $) reduce(item,acc) -> item + acc))
}https://stackoverflow.com/questions/68165096
复制相似问题