如何解决jq传递参数作为新字段的键
我正在尝试使用jq在json文件中添加新字段:
jq -r --arg k "foo" --arg v "bar" '.newField += {$k:$v}' myfile
但是它导致:
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
当我删除如下所示的键变量时,它可以正常工作:
jq -r --arg k "foo" --arg v "bar" '.newField += {"static_key":$v}' myfile
有人知道如何使用jq arg中的键名吗?
解决方法
如错误消息所提示,请在键周围加上括号:
jq -r --arg k "foo" --arg v "bar" '.newField += {($k):$v}' myfile
jq要求将由表达式(即非文字字符串)给定的键括起来(noted in the manual)。
,如果这有帮助,则使用以下命令将arg var本身用作json键,并将arg值用作json值:
$ jq -r --arg foo "bar" '.newField += {$foo}' myfile
....
"newField": {
"foo": "bar"
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。