我有一个JSON文件,正在尝试向其中添加另一个字段。
JSON文件示例
{"data":{}}
查看其他答案
看起来很管用:
objectName="objName"
cat $jsonFile | jq --arg objName $objectName '.data[$objName] += {"test": "json"}'
输出
{
"data": {
"objName": {
"test": "json"
}
}
}
不出所料。
问题是我不能对JSON进行硬编码,所以我将字符串作为变量输入。但是我不能让语法工作:
objectName="objName"
objJSON='{"test": "json"}'
cat $jsonFile | jq -r --arg objName $objectName --arg jsonString $objJSON '.data[$objName] += $jsonString'
我得到了错误
发布于 2021-02-28 02:23:35
使用--argjson-
而不是-arg
当传递JSON而不是字符串时。
当有疑问时,引用您的字符串;这样,如果执行您的代码的shell不是您认为的那个shell,您的值就不会被忽略。(保持编写可移植代码所需的习惯也很有帮助;我在2000年代中期花了6个月的时间学习zsh后放弃它的全部原因是,在为其他shell编写代码时,我的代码质量受到了影响)。
objName="objName"
objJSON='{"test": "json"}'
echo '{"data":{}}' |
jq --arg objectName "$objName" \
--argjson jsonString "$objJSON" \
'.data[$objectName] += $jsonString'
...properly发出:
{
"data": {
"objName": {
"test": "json"
}
}
}
https://stackoverflow.com/questions/66405239
复制相似问题