JOLT如何过滤数组指定idType对象并保留原有父级结构
JOLT过滤数组保留父结构解决方案
你原有spec的核心问题是将过滤后的员工对象直接摊平到根数组,完全丢失了外层的type所属关系,也没有处理无符合条件员工的空数组场景。
可直接使用以下修改后的spec:
[ { "operation": "shift", "spec": { "*": { "type": "[&1].type", "employeeIdDetails": { "*": { "idType": { "HR_EMP|COL_EMP": { "@2": "[&4].employeeIdDetails[]" } } } } } } }, { "operation": "default", "spec": { "*": { "employeeIdDetails": [] } } } ]
逻辑说明
- 第一步shift操作
- 优先保留外层每个条目的
type字段,绑定到原外层索引对应的位置,确保父级结构完全继承 - 遍历
employeeIdDetails下的所有子对象,仅当idType为HR_EMP或COL_EMP时,将该子对象写入对应外层索引下的employeeIdDetails数组
- 第二步default操作
- 给所有外层条目统一设置默认的空
employeeIdDetails数组,避免过滤后无符合条件员工的条目缺失该字段,匹配你要求的空数组输出格式
内容的提问来源于stack exchange,提问作者Alex Donovan
相关产品推荐
相关产品推荐

