Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays jq-在已知另一个值时查找非唯一键的值_Arrays_Json_Sorting_Jq - Fatal编程技术网

Arrays jq-在已知另一个值时查找非唯一键的值

Arrays jq-在已知另一个值时查找非唯一键的值,arrays,json,sorting,jq,Arrays,Json,Sorting,Jq,我正在努力为jq构造一个合适的过滤器,以便在另一个键的值已知时找到特定键的值 以下是json文件: [ { "Header": { "Tenant": "TenantX", "Rcode": 200 }, "Body": { "values": [

我正在努力为jq构造一个合适的过滤器,以便在另一个键的值已知时找到特定键的值

以下是json文件:

[
    {
        "Header": {
            "Tenant": "TenantX",
            "Rcode": 200
        },
        "Body": {
            "values": [
                {
                    "id": "aaaa0001-0a0a-0b0b-0a95-6625bef115e5",
                    "name": "Attribute1"
                },
                {
                    "id": "aaaa0001-0a0a-0b0b-9926-f5dc47d312dd",
                    "name": "Attribute2"
                },
                {
                    "id": "aaaa0001-0a0a-0b0b-aea9-6b39641a0695",
                    "name": "Attribute3"
                },
                {
                    "id": "aaaa0001-0a0a-0b0b-a62b-5b26838eeca7",
                    "name": "Attribute4"
                }
            ]
        }
    }
]
我的目标-对于“name”键的任何给定值,在同一{}块中找到“id”键的值。或者以伪代码/任务为例:

When Header.Tenant ==="TenantX" and Body.values[].name =="Attribute1" 
then
display the value of "id"  
in the same block where "Attribute1" is
“id”
“name”
的值是唯一的,但是name/id组合在
正文中的位置。值[]
数组可以在任何位置。换句话说,对于一个租户,Attribute1可以位于数组的第一个元素中,而对于另一个租户,Attribute1可以位于数组的第十个元素中。此外,一些租户可以在数组中具有某些
名称/id
,而其他租户则没有

我想如果我能在数组中找到给定属性的唯一位置-
Body.values[n].name
,那么
Body.values[n].id
应该能给我答案,对吗


谢谢

您可以使用

.[].Body.values[]
然后选择
name
与字符串匹配的对象的
id

.[].Body.values[] | select(.name == "Attribute1").id