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

如何用JQ修改过滤得到的对象同时保留JSON原有完整结构

问题原因

你原有语句的问题在于使用|管道运算符直接提取了.myValues字段单独处理,执行完成后只会输出修改后的匹配元素,外层的完整JSON结构就丢失了。

解决方案

1. 修改所有满足条件的元素

使用括号包裹定位路径,直接对匹配元素赋值即可保留完整结构,命令如下:

jq '(.myValues[] | select(.filterableValue == "y")) += {"this": "has been added"}'

也可以用更简洁的写法:

jq '(.myValues[] | select(.filterableValue == "y")).this = "has been added"'

2. 仅修改首个满足条件的元素

如果只需要给第一个匹配的元素新增键值对,可以用first函数定位:

jq '(.myValues | first(.[] | select(.filterableValue == "y"))).this = "has been added"'

说明

上述写法只会修改你定位到的匹配元素,其余所有字段(包括外层的foo字段、myValues数组里不匹配的元素)都会原封不动保留,输出结果和你给出的预期结构完全一致。


内容的提问来源于stack exchange,提问作者koks der drache

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:24:03