【发布时间】:2015-08-23 14:01:22
【问题描述】:
我正在使用 jq 将字符串添加到 JSON 数组,效果很好,但我只想添加尚不存在的字符串。我已经尝试过独特的、有的、没有的等。我错过了一个或两个拼图。
这是我的起始 json 文件,foo.json:
{
"widgets": [
{
"name": "foo",
"properties": [
"baz"
]
},
{
"name": "bar"
}
]
}
这是我构建的用于添加字符串的 jq 命令,即使它已经存在:
$ cat foo.json | jq '.widgets[] | select(.name=="foo").properties |= .+ ["cat"]'
这是我尝试的最新版本。
$ cat foo.json | jq '.widgets[] | select(.name=="foo").properties | has("cat") | not | .properties += ["cat"]'
jq: error: Cannot check whether array has a string key
【问题讨论】:
-
注意:我需要打印整个文件,我的迭代没有考虑到这一点。
-
我解决了这个问题: jq '.widgets[] |= (select(.name=="foo").properties |= (.+ ["cat"] | unique))'