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

使用JQ或其他JSON工具更新数组对象并返回完整父JSON的方法

使用JQ修改JSON数组内指定对象并返回完整父级数据的方法

基础修改实现

要实现修改results数组中name为John的age属性为44,直接使用以下jq命令即可:

jq '(.results[] | select(.name == "John") | .age) |= 44' input.json

命令逻辑说明

  • 用()包裹定位路径,确保修改操作针对指定属性生效
  • .results[]遍历results数组下的所有对象
  • select(.name == "John")筛选出name属性为John的目标对象
  • |=是jq的更新赋值运算符,会修改对应属性值,同时返回完整的父级JSON结构,完全符合输出要求

如果需要直接修改原JSON文件,可以使用重定向输出覆盖,或者使用jq 1.6及以上版本支持的--in-place参数:

# 方法1:重定向覆盖
jq '(.results[] | select(.name == "John") | .age) |= 44' input.json > temp.json && mv temp.json input.json
# 方法2:内置就地修改(jq 1.6+)
jq --in-place '(.results[] | select(.name == "John") | .age) |= 44' input.json

缺失属性自动新增

上述命令天然支持属性不存在时的自动新增逻辑:如果匹配到的目标对象没有age属性,jq执行赋值操作时会自动为该对象添加age属性并赋值为44,无需额外编写判断逻辑。
比如原数据中John的对象为{"name": "John", "city": "TownA"},执行命令后会自动补充"age": 44字段。

内容的提问来源于stack exchange,提问作者Nicolas Kudeba

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:06:02