使用JOLT从数组多对象中提取重复字段值并生成唯一对象
JOLT实现JSON数组按code字段去重
要实现按code字段去重,需要分两步进行JOLT转换:先通过shift操作以code值作为唯一键分组去重,再将分组结果转换为目标数组格式。
正确的JOLT Spec
[ { "operation": "shift", "spec": { "*": { "@payload.code": "@payload.code.code" } } }, { "operation": "shift", "spec": { "*": { "$": "[&1].code" } } } ]
转换逻辑说明
第一步shift操作:
- 遍历输入数组的每个元素(
*匹配所有数组索引) - 用
@payload.code的值作为顶层键,将code值赋值给该键下的code字段 - 相同
code值的元素会被自动合并覆盖,最终得到以code值为键的对象(如{"ABC": {"code": "ABC"}, "DEF": {"code": "DEF"}})
- 遍历输入数组的每个元素(
第二步shift操作:
- 遍历第一步生成的所有键(
*匹配ABC、DEF等) - 用
$引用当前键的名称,将其赋值给数组元素的code字段 - 最终转换为包含唯一
code的对象数组
- 遍历第一步生成的所有键(
验证结果
输入数组经过上述Spec转换后,将得到预期输出:
[ { "code": "ABC" }, { "code": "DEF" } ]
内容的提问来源于stack exchange,提问作者pramod wadappi
相关产品推荐
相关产品推荐

