![](/img/trans.png)
[英]Jq: How to select an object if the object has an array of objects, that have a key with a value that does not match?
[英]How to select/get object elements' (array of objects) keys based on value of an element in an object in the aforementioned array in jq?
我有以下输入:
{
"key1": {
"subkey1": [
{
"filterkey1": "value1",
"filterkey2": "value2"
},
{
"filterkey1": "value3",
"filterkey2": "value4"
}
],
"subkey2": [
{
"filterkey1": "value5",
"filterkey2": "value6"
},
{
"filterkey1": "value7",
"filterkey2": "value8"
}
],
"subkey3": [
{
"filterkey1": "value1",
"filterkey2": "value6"
},
{
"filterkey1": "value9",
"filterkey2": "value4"
}
]
},
"key2": {
}
}
我想获取具有对象的数组的键,该对象的键为"value1"
: "filterkey1"
。 所以在这种情况下,输出必须是:
["subkey1", "subkey3"]
我关心的所有元素都在“key1”对象中。
使用Get 子项小号keys_unsorted
,并检查它们的值有filterkey1: "value1"
使用对any
:
.key1 | [
keys_unsorted[] as $k
| if any(.[$k][]; .filterkey1=="value1")
then $k
else empty end
]
如果您也想考虑替代方案,这里有一个基于unix walk-path
的实用程序jtc
允许类似地操作JSON:
bash $ <file.json jtc -jw'[key1][filterkey1]:<value1>:[-2]<>k'
[
"subkey1",
"subkey3"
]
bash $
PS> Disclosure:我是用于JSON操作的jtc
-shell cli工具的创建者
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.