jq过滤具有特定值的对象并获取父对象的ID

时间:2018-11-16 11:50:03

标签: json filter jq

嗨,我在玩jq时遇到了问题。

这是我的数据

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

我现在想要的是等级为84的all tr​​adeID。

所以我尝试使用此过滤器:

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

但是,使用此过滤器,我位于itemData中,无法访问我感兴趣的tradeId。我对jq并不是很熟悉,所以这可能是一个基本问题,但是如何从使用此过滤器的地方到达tradeId?

1 个答案:

答案 0 :(得分:2)

我认为您需要做的是在下面。逻辑是您需要列出所有数组对象,过滤等级值以获得子集,并为这些对象打印tradeId

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