json - jq过滤具有特定值的对象并获取父对象的ID
问题描述
嗨,我正在玩 jq 并遇到问题。
这是我的数据:
{
"auctionInfo": [{
"tradeId": 229143000306,
"itemData": {
"id": 320854114832,
"rating": 82
}
},
{
"tradeId": 229143000307,
"itemData": {
"id": 320854114833,
"rating": 84
}
},
{
"tradeId": 229143000308,
"itemData": {
"id": 320854114834,
"rating": 84
}
}
]
}
我现在想要的是评分为 84 的所有 tradeIds。
所以我用这个过滤器试了一下:
| jq -r .auctionInfo[].itemData | select(.rating==84)
但是使用这个过滤器,我在 itemData 内部,无法访问我感兴趣的 tradeId。我对 jq 不是很熟悉,所以可能是一个基本问题,但我怎样才能从我站在这个过滤器的位置到达 tradeId?
解决方案
我想你需要做的就在下面。逻辑是您需要列出所有数组对象,过滤评级值以获取子集并tradeId
为这些对象打印
jq '.auctionInfo[] | select(.itemData.rating == 84).tradeId'
推荐阅读
- typescript - 对 null 的条件检查不适用于函数
- javascript - 单击画布中的任意位置创建一个圆圈 - Javascript/Canvas
- active-directory - Kerberos GSSAPI AD 身份验证失败
- java - 事务不会因 RuntimeException 而回滚
- laravel - Laravel 多对多关系需要执行查询以获取角色 ID = 5 的用户列表
- java - 需要一个想法,如何在 JFileChooser 中打开选定的文件夹
- oracle - 格式化数据
- azure - 带有 PowerShell 7 的 Azure DSC
- hyperledger-fabric - 远程访问 fabric-sample Fabric 网络
- docker - 如何在单个命令中删除多个容器?