如何使用Jolt Transform从员工列表中移除团队列表成员
如何用Jolt从employeelist中移除teamList里的成员
我有一个employeelist,需要从中移除teamList中的成员。teamList里的成员可能在employeelist中存在,也可能不存在。
示例输入
{ "employeelist": [ "john", "aaron", "mike" ], "teamList": [ "rachel", "john" ] }
期望输出
{ "employeelist": [ "aaron", "mike" ] }
我之前尝试按特定值过滤,但不知道怎么获取剩余成员,当前用的Jolt规则是:
[ { "operation": "shift", "spec": { "list2": { "*": "[#2].list[]" } } } ]
解决方法
可以通过shift和remove组合操作实现需求,具体Jolt规则如下:
[ // 把teamList转成键值对,方便后续判断是否要排除 { "operation": "shift", "spec": { "employeelist": "employeelist", "teamList": { "*": "excludeMap.&" } } }, // 过滤employeelist,只保留不在excludeMap里的成员 { "operation": "shift", "spec": { "employeelist": { "*": { "@(2,excludeMap.&)": { // 成员在排除列表里,直接丢弃 "*": null }, // 成员不在排除列表里,保留到新数组 "#": "employeelist[]" } } } }, // 删掉临时用的excludeMap,只留最终结果 { "operation": "remove", "spec": { "excludeMap": "" } } ]
规则说明
- 第一个shift操作:将
teamList的每个成员转为excludeMap的键(值和键名一致),同时保留原始的employeelist。 - 第二个shift操作:遍历
employeelist的每个成员,检查该成员是否在excludeMap中。如果存在就设为null(丢弃),否则把成员名加入新的employeelist数组。 - 第三个remove操作:清理临时生成的
excludeMap,只保留我们需要的employeelist。
内容的提问来源于stack exchange,提问作者Scorpy
相关产品推荐
相关产品推荐

