我正在尝试使用 jq 在 json 文件中添加新字段:
jq -r --arg k "foo" --arg v "bar" '.newField += {$k:$v}' myfile
Run Code Online (Sandbox Code Playgroud)
但它的结果是:
jq: error: syntax error, unexpected ':', expecting '}' (Unix shell quoting issues?) at <top-level>, line 1:
.newField += {$k:$v}
jq: error: May need parentheses around object key expression at <top-level>, line 1:
.newField += {$k:$v}
jq: 2 compile errors
Run Code Online (Sandbox Code Playgroud)
当我删除像下面这样的关键变量时,它工作正常:
jq -r --arg k "foo" --arg v "bar" '.newField += {"static_key":$v}' myfile
Run Code Online (Sandbox Code Playgroud)
知道如何使用 jq arg 中的键名吗?
正如错误消息所示,将密钥放在括号中:
jq -r --arg k "foo" --arg v "bar" '.newField += {($k):$v}' myfile
Run Code Online (Sandbox Code Playgroud)
jq 要求表达式(即不是文字字符串)给出的键加括号(在手册中注明)。