JQ фильтровать объекты с конкретными значениями и получить идентификатор родительского объекта - PullRequest
0 голосов
/ 16 ноября 2018

Привет, я немного играю с jq и у меня проблема.

Это мои данные:

{
    "auctionInfo": [{
            "tradeId": 229143000306,
            "itemData": {
                "id": 320854114832,
                "rating": 82
            }
        },
        {
            "tradeId": 229143000307,
            "itemData": {
                "id": 320854114833,
                "rating": 84
            }
        },
        {
            "tradeId": 229143000308,
            "itemData": {
                "id": 320854114834,
                "rating": 84
            }
        }
    ]
}

То, что я сейчас хочу, это все торговые идентификаторы с рейтингом 84.

Так что я попробовал это с этим фильтром:

| jq -r .auctionInfo[].itemData | select(.rating==84)

Но с этим фильтром я нахожусь внутри itemData и не имею доступа к TradeId, который меня интересует.Я не очень знаком с jq, поэтому, возможно, это основной вопрос, но как мне получить tradeId, откуда я стою с этим фильтром?

1 Ответ

0 голосов
/ 16 ноября 2018

Я думаю, все, что вам нужно сделать, это ниже.Логика заключается в том, что вам нужно перечислить все объекты массива, отфильтровать значение рейтинга, чтобы получить подмножество, и вывести tradeId для этих объектов

jq '.auctionInfo[] | select(.itemData.rating == 84).tradeId'
...