我正在使用应用程序 jq 从命令行过滤 json 文件。
https://stedolan.github.io/jq/ https://stedolan.github.io/jq/
这是一个代表问题的糟糕例子。如何过滤该集合以包含所有非红色或非圆形的水果?
水果.json:
[
{
"name": "banana",
"tags": [
"yellow",
"long"
]
},
{
"name": "apple",
"tags": [
"red",
"round"
]
},
{
"name": "orange",
"tags": [
"orange",
"round",
"colored"
]
}
]
这会找到所有红色水果:
jq '.[] | select(.tags[] == "red")' fruit.json
如何找到所有非红色的水果?
是的,我知道在这个例子中,用于不同目的的标签数组并不是一个好的设计。现实世界的数据有一个数组是有充分理由的。我只是在寻找如何搜索数组不包含值的记录。
这给出了奇怪的结果,包括重复项,其中包括“苹果”,因为“圆形”不是“红色”,因此它匹配。
jq '.[] | select(.tags[] != "red")' fruit.json
建议?