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