使用Jolt按指定键提取属性:拆分经理与同事列表问题
Jolt配置问题:按指定字段提取经理和同事独立列表
需求:根据输入JSON中的manager和colleague字段值,从employeelist数组中提取对应员工,分别生成经理和同事的独立列表。当前使用的Jolt Shift规格导致两个列表都重复了完整员工列表,寻求正确配置方案。
输入JSON
{ "employeelist": [ { "employee": "test", "firstName": "ABC", "lastName": "DEF" }, { "employee": "test1", "firstName": "nametest", "lastName": "namelast" } ], "manager": "test", "colleague": "test1" }
期望输出
{ "manager": [ { "employee": "test", "firstName": "ABC", "lastName": "DEF" } ], "colleague": [ { "employee": "test1", "firstName": "nametest", "lastName": "namelast" } ] }
当前错误的Jolt规格
[ { // segregate values of the same key and form respective arrays. "operation": "shift", "spec": { "employeelist": { "*": { "employee": { "@(3,manager)": { "@2": "manager.[]" }, "@(3,colleague)": { "@2": "colleague.[]" } } } } } } ]
正确的Jolt配置方案
[ { "operation": "shift", "spec": { "employeelist": { "*": { // 用当前员工的employee值与根节点的manager/colleague值匹配 "@(1,employee)": { "@(3,manager)": { "@2": "manager.[]" }, "@(3,colleague)": { "@2": "colleague.[]" } } } } } } ]
配置说明
- 利用
@(1,employee)获取当前遍历到的员工的employee字段值 - 通过
@(3,manager)和@(3,colleague)引用根节点的经理、同事标识值 - 只有当员工的
employee值与经理/同事标识值匹配时,才将该员工对象(@2指向当前员工的完整对象)加入对应的数组中,避免了无关员工被重复加入列表
内容的提问来源于stack exchange,提问作者Scorpy
相关产品推荐
相关产品推荐

