如何用Jolt移除不存在id键的JSON数组条目
使用Jolt实现过滤含id的数组元素并保留指定字段
输入JSON:
[ { "id": "112", "key": "value1", "dfsf": "dffd" }, { "key1": "value2" }, { "id": "113", "key2": "value3" } ]
期望输出JSON:
[ { "id": "112", "key": "value1" }, { "id": "113", "key2": "value3" } ]
这里提供两种适配不同场景的Jolt转换方案:
方案一:精准保留指定业务字段
适合明确知道要保留哪些字段的场景,直接指定需要保留的业务键:
[ { "operation": "shift", "spec": { "*": { "id": { "@(2,id)": "[#2].id", "@(2,key)": "[#2].key", "@(2,key2)": "[#2].key2" } } } }, { "operation": "remove", "spec": { "*": { "*": { "$null": "" } } } } ]
- 第一阶段
shift:遍历数组每个元素,只处理包含id的条目,通过@(2,xxx)回溯提取需要保留的字段,[#2]对应原数组元素的索引位置。 - 第二阶段
remove:移除转换后生成的null值字段(比如第一个元素没有key2,会被自动置为null,这一步清理掉这类无用字段)。
方案二:排除指定冗余字段后保留其余内容
适合只需要剔除少数无关字段的场景,先清理冗余再过滤条目:
[ { "operation": "remove", "spec": { "*": { "dfsf": "" } } }, { "operation": "shift", "spec": { "*": { "id": { "@(2)": "[#2]" } } } } ]
- 第一阶段
remove:遍历所有元素,直接删掉不需要的dfsf字段。 - 第二阶段
shift:仅保留包含id的完整元素,无id的条目会被自动过滤。
内容的提问来源于stack exchange,提问作者Shashi Kiran GM
相关产品推荐
相关产品推荐

