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

如何使用JQ向嵌套JSON中key为vehicles的rows数组追加新对象

问题根因
  • 你使用的+=操作对象错了:.config.list[].rows[] += xxx中rows[]是遍历rows数组内的已有元素,+=作用于对象时为属性合并,所以是修改已有row的属性,不是往rows数组追加新元素,和键名重复无关。
  • 未做节点筛选:命令没有过滤list数组中key=vehicles的项,会误改其他list子节点的内容。
正确处理命令

直接输出修改结果的命令:

jq '.config.list |= map(
  if .key == "vehicles" 
  then .rows += [{"data":[{"key":"bike","value":"yyy"},{"key":"car","value":"xxx"}],"default":false}] 
  else . end
)' file.json

如果需要直接修改原文件,可以加上-i参数(jq 1.6及以上版本支持):

jq -i '.config.list |= map(if .key == "vehicles" then .rows += [{"data":[{"key":"bike","value":"yyy"},{"key":"car","value":"xxx"}],"default":false}] else . end)' file.json
命令逻辑说明
  • 用map遍历config.list数组,仅匹配key为vehicles的项做修改,其余项保持原内容不变
  • 对目标项的rows数组直接执行追加操作:rows += [新对象],将待添加的对象包裹为数组元素,即可追加到rows数组末尾,不会改动原有元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:06:03