You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JQ根据指定key的value删除JSON中的匹配对象

该需求完全可以通过JQ实现,且天然适配你提到的「payload对象结构不固定、仅hash字段唯一恒定」的场景。

实现方案

核心逻辑是对data数组做过滤,仅保留hash值不等于待删除目标值的元素,其余字段会完整保留,不受对象内其他key变化的影响。

固定目标值写法

直接把待删除的hash值写在命令中:

jq '.data |= map(select(.hash != "0M0fudEmzW9dmAsO3dcWT286tTL6wTX9sllXtsyz-0Q"))' 你的json文件路径

动态传参写法(更适合自动化场景)

通过JQ的--arg参数传入待删除的hash值,避免硬编码和特殊字符转义问题:

# 替换为实际要删除的hash值
DEL_HASH="0M0fudEmzW9dmAsO3dcWT286tTL6wTX9sllXtsyz-0Q"
jq --arg target_hash "$DEL_HASH" '.data |= map(select(.hash != $target_hash))' 你的json文件路径

命令说明

  • .data |= 是JQ的更新赋值操作符,会将右侧过滤后的数组结果重新赋值给原JSON的data字段
  • map(select(筛选条件)) 会遍历数组的每一个元素,只保留符合筛选条件的元素
  • 筛选条件仅校验hash字段,完全不关心对象内其他key的存在情况,完美匹配你的实际业务场景要求。

内容的提问来源于stack exchange,提问作者Nick Hatfield

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:06:07