给定这样的文档:
[
{
"KVs" : [
{
"Key": "animal",
"Value": "lion"
},
{
"Key": "mascot",
"Value": "lion"
}
],
"name": "roger"
},
{
"KVs" : [
{
"Key": "animal",
"Value": "zebra"
},
{
"Key": "mascot",
"Value": "lion"
}
],
"name": "linda"
}
]
Run Code Online (Sandbox Code Playgroud)
我想jq只选择包含 KV 对的顶部数组的那些元素animal == "lion"。
上述 JSON 文档的输出应为:
{
"KVs" : [
{
"Key": "animal",
"Value": "lion"
},
{
"Key": "mascot",
"Value": "lion"
}
],
"name": "roger"
}
Run Code Online (Sandbox Code Playgroud)
无法弄清楚如何使用select(). 我知道如何使用它根据一个特定字段进行选择。例如通过键名:.[] | select(.KVs[].Key == "animal"),对吗?但是我如何告诉它在两个字段(键和值)上匹配相同的 KV 对象?
Ass*_*vie 13
NM,在jqplay的帮助下和一些试验和错误解决了它。
这是解决方案:
.[] | select(.KVs[] | .Key == "animal" and .Value == "lion")
( jqplay 永久链接)