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

使用jq更新JSON嵌套数组mpa值失败,正确操作方法是什么?

错误点梳理

  • 路径书写错误:你的JSON根节点是普通对象而非数组,路径前缀.[].是数组遍历语法,在这里完全不需要,会导致jq遍历根节点下的所有属性值,大部分属性值都不存在后续的cmp.vr1.vr2路径,自然匹配失败。
  • 过滤器未加引号:jq的过滤器包含=、[]这类shell特殊字符时,必须用单引号包裹,否则shell会提前解析这些符号,导致jq收到的参数不完整,执行逻辑异常。
  • 多余的-r参数:-r参数作用是输出原始字符串(自动去除JSON字符串值的外层引号),你需要输出完整的JSON结构,不需要加这个参数。

正确实现方式

如果只需要输出修改后的JSON内容,直接执行以下命令即可:

jq '.cmp.vr1.vr2.mpa = ["bar1", "bar2"]' /tmp/json-file.json

如果需要直接修改原文件,可以搭配sponge命令(需提前安装moreutils软件包)使用:

jq '.cmp.vr1.vr2.mpa = ["bar1", "bar2"]' /tmp/json-file.json | sponge /tmp/json-file.json

如果不方便安装额外工具,也可以用临时文件重定向的方式替换原文件:

jq '.cmp.vr1.vr2.mpa = ["bar1", "bar2"]' /tmp/json-file.json > /tmp/tmp.json && mv /tmp/tmp.json /tmp/json-file.json

内容的提问来源于stack exchange,提问作者Darth.Vader

相关产品推荐
方舟 Agent Plan

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

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