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

如何使用jq修改JSON指定字段后输出完整的JSON文件

解决jq修改JSON后输出完整结构的问题

你的问题出在原命令通过管道筛选并输出了单独修改后的对象,没有保留顶层JSON结构。要输出完整的JSON文件,需要使用jq的赋值操作符来修改数组元素并保留整体结构。

正确命令写法1:使用map遍历修改

jq '.data |= map(if .id == 100 then .content = "watermelon" else . end)' test.json

正确命令写法2:直接对数组元素更新

jq '.data[] |= (select(.id == 100).content = "watermelon")' test.json

执行效果

运行上述命令后,会输出完整的JSON内容:

{
  "data": [
    {
      "id": 0,
      "content": "apple"
    },
    {
      "id": 100,
      "content": "watermelon"
    }
  ]
}

原理说明

  • 原命令.data[]|select(.id==100)|.content|="watermelon"会先展开data数组的所有元素,筛选出id=100的对象,修改后仅输出该对象,丢失了顶层结构和其他数组元素。
  • 正确写法通过|=将修改后的数组重新赋值给.data字段,或者直接对数组元素进行条件更新,确保整个JSON结构被保留并输出。

内容的提问来源于stack exchange,提问作者Logan Lee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:12:31