JOLT Shift操作中如何筛选priority为0的industryCodes数据?
JOLT转换过滤priority=1数据的解决方案
问题场景
现有JSON输入片段:
"industryCodes": [ { "code": "1234567", "description": "industry description1", "typeDescription": "standard1", "typeCode": "765", "priority": 0 }, { "code": "Fail", "description": "industry description1", "typeDescription": "standard1", "typeCode": "765", "priority": 1 }, { "code": "Fail2", "description": "industry description2", "typeDescription": "standard2", "typeCode": "0001", "priority": 0 }]
期望输出仅保留priority=0且typeCode=765的条目:
"standard1" : [ { "value" : "1234567" } ]
当前JOLT代码会把priority=1的Fail也纳入结果,需调整过滤逻辑。
修改后的JOLT代码
{ "operation": "shift", "spec": { "industryCodes": { "*": { "priority": { "0": { "@(2,typeCode)": { "765": { "@(3,code)": "[4].attributes.standard1[0].value" } } } } } } } }
逻辑说明
- 新增
"priority": {"0": {...}}层级,先过滤出priority等于0的条目,再执行后续typeCode匹配和取值操作,直接排除priority=1的数据。 - 使用
@(3,code)是因为当前层级位于priority的0节点下,向上追溯3层才能获取到code字段的取值(层级依次为:priority节点 → 数组元素节点 → industryCodes下的对象节点)。
内容的提问来源于stack exchange,提问作者Kinetic
相关产品推荐
相关产品推荐

