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

如何使用jq更新JSON数组值并返回完整JSON结构?

问题原因与解决方法

问题根源

你当前的jq命令先提取了.data.cars数组进行处理,但最终只输出这个处理后的数组,没有将其放回原JSON的层级结构中,所以丢失了顶层的data包裹结构。

正确命令

要保留完整JSON结构,需要使用jq的更新赋值运算符|=,直接修改原JSON里的.data.cars字段:

jq '.data.cars |= map(.rating = (if .specs.seats > 3 then "OK" else "Too small" end))' cardata.json

|=的作用是把左侧路径(.data.cars)对应的值,替换成右侧表达式处理后的结果,这样整个JSON的层级会被完整保留。

执行结果

运行上述命令后,会返回完整的更新后JSON:

{
  "data": {
    "cars": [
      {
        "type": "limo",
        "rating": "OK",
        "comfort": 1,
        "specs": {
          "seats": 6,
          "heat": true,
          "color": "black"
        }
      },
      {
        "type": "sedan",
        "rating": "OK",
        "comfort": 2,
        "specs": {
          "seats": 4,
          "heat": true,
          "color": "blue"
        }
      },
      {
        "type": "open",
        "rating": "Too small",
        "comfort": 3,
        "specs": {
          "seats": 2,
          "heat": true,
          "color": "red"
        }
      },
      {
        "type": "sport",
        "rating": "Too small",
        "comfort": 5,
        "specs": {
          "seats": 1,
          "heat": false,
          "color": "yellow"
        }
      }
    ]
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 14:13:24