Mule 无法使用dataweave筛选具有动态键的对象数组
我想根据EmployeeStatus筛选这个对象数组,EmployeeStatus应该是辞职和终止的,而不是活动的。这里每个对象的键都不同,因此我无法应用类似item.key.EmployeeStaus==辞职或终止的逻辑。任何建议或提示都会对我有所帮助 输入有效载荷 所需输出Mule 无法使用dataweave筛选具有动态键的对象数组,mule,dataweave,mulesoft,Mule,Dataweave,Mulesoft,我想根据EmployeeStatus筛选这个对象数组,EmployeeStatus应该是辞职和终止的,而不是活动的。这里每个对象的键都不同,因此我无法应用类似item.key.EmployeeStaus==辞职或终止的逻辑。任何建议或提示都会对我有所帮助 输入有效载荷 所需输出 您可以通过跨结构过滤记录。首先是一个数组,使用map。每个元素都是一个具有单个键的对象,所以让我们先使用mapObject,然后使用filter。我没有尝试删除空数组 %dw 2.0 output application
您可以通过跨结构过滤记录。首先是一个数组,使用map。每个元素都是一个具有单个键的对象,所以让我们先使用mapObject,然后使用filter。我没有尝试删除空数组
%dw 2.0
output application/json skipNullOn="everywhere"
fun filterEmployeeStatus(e) = e filter ($.Employeestatus == "Resigned" or $.Employeestatus == "Terminated")
---
payload map
( $ mapObject ((value, key, index) -> (key): filterEmployeeStatus(value) ) )
输出:
[
{
"626433000000196190": [
{
"EmailID": "rubyrichards@zylker.com",
"Employeestatus": "Resigned"
}
]
},
{
"626433000000196184": [
]
},
{
"626433000000196178": [
]
},
{
"626433000000196166": [
{
"EmailID": "daveduken@zylker.com",
"Employeestatus": "Terminated"
}
]
}
]
您可以通过跨结构过滤记录。首先是一个数组,使用map。每个元素都是一个具有单个键的对象,所以让我们先使用mapObject,然后使用filter。我没有尝试删除空数组
%dw 2.0
output application/json skipNullOn="everywhere"
fun filterEmployeeStatus(e) = e filter ($.Employeestatus == "Resigned" or $.Employeestatus == "Terminated")
---
payload map
( $ mapObject ((value, key, index) -> (key): filterEmployeeStatus(value) ) )
输出:
[
{
"626433000000196190": [
{
"EmailID": "rubyrichards@zylker.com",
"Employeestatus": "Resigned"
}
]
},
{
"626433000000196184": [
]
},
{
"626433000000196178": [
]
},
{
"626433000000196166": [
{
"EmailID": "daveduken@zylker.com",
"Employeestatus": "Terminated"
}
]
}
]
也许是这样的: 输入 剧本 输出
也许是这样的: 输入 剧本 输出 下面是另一个例子:
%dw 2.0
output application/json
var data = [
{
"626433000000196190": [
{
"EmailID": "rubyrichards@zylker.com",
"Employeestatus": "Resigned"
}
]
},
{
"626433000000196184": [
{
"EmailID": "morganfinely@zylker.com",
"Employeestatus": "Active"
}
]
},
{
"626433000000196178": [
{
"EmailID": "jenniferjackson@zylker.com",
"Employeestatus": "Active"
}
]
},
{
"626433000000196166": [
{
"EmailID": "daveduken@zylker.com",
"Employeestatus": "Terminated"
}
]
}
]
---
flatten({(data)} pluck $) filter not ($.Employeestatus == "Active")
稍后我将添加解释
编辑:以下是DW文档的说明和链接:
我利用特性{data}来破坏数组并将所有封闭的对象折叠成一个对象。
然后,我使用获取数组中的值。
我利用折叠子数组的第一级,因为我们刚才获取的值也是数组。现在有了一个平面阵列。
现在,我使用删除删除所有未正确执行断言的记录。
下面是另一个例子:
%dw 2.0
output application/json
var data = [
{
"626433000000196190": [
{
"EmailID": "rubyrichards@zylker.com",
"Employeestatus": "Resigned"
}
]
},
{
"626433000000196184": [
{
"EmailID": "morganfinely@zylker.com",
"Employeestatus": "Active"
}
]
},
{
"626433000000196178": [
{
"EmailID": "jenniferjackson@zylker.com",
"Employeestatus": "Active"
}
]
},
{
"626433000000196166": [
{
"EmailID": "daveduken@zylker.com",
"Employeestatus": "Terminated"
}
]
}
]
---
flatten({(data)} pluck $) filter not ($.Employeestatus == "Active")
稍后我将添加解释
编辑:以下是DW文档的说明和链接:
我利用特性{data}来破坏数组并将所有封闭的对象折叠成一个对象。
然后,我使用获取数组中的值。
我利用折叠子数组的第一级,因为我们刚才获取的值也是数组。现在有了一个平面阵列。
现在,我使用删除删除所有未正确执行断言的记录。
嘿@aled。。无论如何,我们不能删除当前的密钥吗???这些密钥对我来说不再是必需的..我只是想消除存在于两者之间的数组的复杂性,这样对于进一步的操作,我将更容易使用结果有效负载,这是我上面所讨论的所需输出..我只是想知道它是否可能或可能脚本末尾的notpull$应该可以帮助您实现这一点。嘿@aled。。无论如何,我们不能删除当前的密钥吗???这些密钥对我来说不再是必需的..我只是想消除存在于两者之间的数组的复杂性,这样对于进一步的操作,我将更容易使用结果有效负载,这是我上面所讨论的所需输出..我只是想知道它是否可能或可能脚本末尾的notpull$应该可以帮助您实现这一点。
[
{
"EmailID": "rubyrichards@zylker.com",
"Employeestatus": "Resigned"
},
{
"EmailID": "daveduken@zylker.com",
"Employeestatus": "Terminated"
}
]
%dw 2.0
output application/json
var data = [
{
"626433000000196190": [
{
"EmailID": "rubyrichards@zylker.com",
"Employeestatus": "Resigned"
}
]
},
{
"626433000000196184": [
{
"EmailID": "morganfinely@zylker.com",
"Employeestatus": "Active"
}
]
},
{
"626433000000196178": [
{
"EmailID": "jenniferjackson@zylker.com",
"Employeestatus": "Active"
}
]
},
{
"626433000000196166": [
{
"EmailID": "daveduken@zylker.com",
"Employeestatus": "Terminated"
}
]
}
]
---
flatten({(data)} pluck $) filter not ($.Employeestatus == "Active")