![](/img/trans.png)
[英]How to filter an array of objects based on values in an inner array with jq?
[英]How to use JQ to filter an object based on a value, and return an array of different values?
我有一個返回大量對象的調用。
對象看起來像:
{
"accounts": [
{
"id": 1234,
"name": "Sample Name",
"status": "upgraded",
"subscription": {
"id": 4567,
"products": [
{
"product_id": 5,
"name": "Awesome Product",
"units": 1,
"price": 1
},
{
"product_id": 1,
"name": "Another Awesome Product",
"units": 1,
"price": 1
}
]
},
"owner": {
"id": 12345,
"email": "email@email.com",
"first_name": "John",
"last_name": "Doe",
"state": "active"
}
}
]
}
在這個數組中,有許多不同的對象,擁有許多不同的所有者,如果所有者屬性為 12345,我想返回一個僅包含 id(對象的第一個屬性)的數組。
到目前為止我有
| jq -r '.accounts[] | [.id]'
它返回 object 中的所有“id”,但我無法根據“所有者”值過濾此數組
我試過添加:
| jq -r '.accounts[] | [.id] | select(.id == 12345)'
但我目前收到錯誤
Cannot index array with string "id"
你很親密。 對所有者ID為12345
的select賬戶,提取他們的(賬戶的,不是所有者的) ID ,你可以使用這個:
$ jq '.accounts | map(select(.owner.id == 12345) .id)' file
[
1234
]
另一種選擇可能是
.accounts[]| select(.owner.id == 12345).id
輸出:
1234
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.