在下面的示例json中,我可以使用jq -M ' map(select(.charge == null)) '
[
{
"id": 1,
"name": "vehicleA",
"state": "available",
"charge": 100
},
{
"id": 2,
"name": "vehicleB",
"state": "available",
},
{
"id": 3,
"name": "vehicleB",
"state": "available",
"charge": 50
}
]
返回:
{
"id": 2,
"name": "vehicleB",
"state": "available",
}
如何只获取id
以及与过滤记录的id
相关联的值,以便将此步骤添加到上述查询中将返回2
?
答案 0 :(得分:3)
您的问题并不准确:
map(select(.charge == null))
的输出不是示例中的对象,而是单个对象的数组在任何情况下,您都可以从.id
的结果中提取map
,如下所示:
jq -M 'map(select(.charge == null)) | .[].id' file.json
答案 1 :(得分:3)
如果你想要一个免费的项目数组,你可以使用这个过滤器:
.items | map(select(.charge == null) | .id)
如果您想要枚举的值而不是收集到数组中,那么更好:
.items[] | select(.charge == null) | .id