我正在使用jq将字符串添加到JSON数组,并且它工作得很好,但我只想添加尚不存在的字符串.我已经尝试过独特的,有,而不是等等.我错过了一两块拼图.
这是我的起始json文件foo.json:
{
"widgets": [
{
"name": "foo",
"properties": [
"baz"
]
},
{
"name": "bar"
}
]
}
Run Code Online (Sandbox Code Playgroud)
这是我构建的jq命令,它添加了字符串,即使它已经存在:
$ cat foo.json | jq '.widgets[] | select(.name=="foo").properties |= .+ ["cat"]'
Run Code Online (Sandbox Code Playgroud)
这是我尝试的最新版本.
$ cat foo.json | jq '.widgets[] | select(.name=="foo").properties | has("cat") | not | .properties += ["cat"]'
jq: error: Cannot check whether array has a string key
Run Code Online (Sandbox Code Playgroud)
小智 8
有很多方法可以做到这一点.
假设数组的元素应该是唯一的,您的用例强烈暗示,您可以在添加后通过unique过滤器传递结果数组.
$ cat foo.json | jq '.widgets[] | select(.name=="foo").properties |= (.+ ["cat"] | unique)'
Run Code Online (Sandbox Code Playgroud)