请求提供/优化Jolt Spec以去除嵌套JSON中的重复项
Jolt 数组去重 Spec 实现
针对你遇到的WFI_Customer和WFI_Reasons数组重复条目问题,以下是精准的Jolt转换Spec,可实现按唯一字段去重,输出无重复的目标JSON。
示例输入
假设你的输入JSON结构如下(包含重复条目):
{ "WFI_Customer": [ { "id": 1, "name": "Alice" }, { "id": 2, "name": "Bob" }, { "id": 1, "name": "Alice" } ], "WFI_Reasons": [ { "code": "R01", "desc": "Late Payment" }, { "code": "R02", "desc": "Insufficient Funds" }, { "code": "R01", "desc": "Late Payment" } ] }
去重Jolt Spec
[ // 步骤1:按唯一字段将数组元素转为键值对(自动去重) { "operation": "shift", "spec": { "WFI_Customer": { "*": { "id": "WFI_Customer_temp.@(1,id).id", "name": "WFI_Customer_temp.@(1,id).name" } }, "WFI_Reasons": { "*": { "code": "WFI_Reasons_temp.@(1,code).code", "desc": "WFI_Reasons_temp.@(1,code).desc" } } } }, // 步骤2:将去重后的键值对转回数组 { "operation": "shift", "spec": { "WFI_Customer_temp": { "*": "WFI_Customer[]" }, "WFI_Reasons_temp": { "*": "WFI_Reasons[]" } } } ]
关键说明
- 去重逻辑:第一个
shift操作利用对象键的唯一性,将数组元素以id(WFI_Customer)和code(WFI_Reasons)作为临时键,重复元素会被自动覆盖(因相同键仅保留最后一个实例,且重复元素内容一致,结果无影响)。 - 适配调整:如果你的数组唯一标识不是
id或code,只需将@(1,id)替换为对应字段(如@(1,name))即可。 - 通用去重备选:若需按整个对象完全匹配去重,可使用
cardinality操作,但该方式依赖对象哈希匹配,可控性稍弱:[ { "operation": "cardinality", "spec": { "WFI_Customer": "ONE", "WFI_Reasons": "ONE" } } ]
转换后输出
{ "WFI_Customer": [ { "id": 1, "name": "Alice" }, { "id": 2, "name": "Bob" } ], "WFI_Reasons": [ { "code": "R01", "desc": "Late Payment" }, { "code": "R02", "desc": "Insufficient Funds" } ] }
内容的提问来源于stack exchange,提问作者Manjunath k
相关产品推荐
相关产品推荐

