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

如何使用jq通过传入的键参数更新JSON对象中的值?

问题:使用jq通过参数指定键更新JSON值

输入的JSON对象为:

{
  "a": 1,
  "b": 2,
  "c": 3
}

需要通过--arg传入参数指定键,将对应的值更新为原数值加40(比如传入key=b时,b的值变为42)。

尝试了以下命令均报错:

jq --arg key b '.($key) |= . + 40'
jq --arg key b '" .\($key)" |= . + 40'

错误信息分别是:

  • syntax error, unexpected '('
  • Invalid path expression with result ".b"
解决方法

在jq中,通过变量引用对象键时,必须使用.[$变量名]的语法,正确的命令如下:

jq --arg key b '.[$key] |= . + 40'

验证效果

将输入JSON通过管道传入该命令:

echo '{
  "a": 1,
  "b": 2,
  "c": 3
}' | jq --arg key b '.[$key] |= . + 40'

输出结果符合预期:

{
  "a": 1,
  "b": 42,
  "c": 3
}

错误原因说明

  • 第一种写法.($key)不符合jq的路径表达式语法,jq无法解析这种变量引用方式,直接触发语法错误。
  • 第二种写法试图通过字符串拼接生成路径,但jq会将其视为字符串字面量,而非合法的路径表达式,因此报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 07:44:52