在下面的示例 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
}
]
Run Code Online (Sandbox Code Playgroud)
返回:
{
"id": 2,
"name": "vehicleB",
"state": "available",
}
Run Code Online (Sandbox Code Playgroud)
如何仅获取id与过滤记录关联的值id,以便将此步骤添加到上述查询中将返回2?
如果您想要免费项目的 id 数组,您可以使用此过滤器:
.items | map(select(.charge == null) | .id)
Run Code Online (Sandbox Code Playgroud)
如果您希望枚举值而不是收集到数组中,则更好:
.items[] | select(.charge == null) | .id
Run Code Online (Sandbox Code Playgroud)
你的问题并不完全准确:
map(select(.charge == null))不是示例中的对象,而是单个对象的数组.id在任何情况下,您都可以从结果中提取map:
jq -M 'map(select(.charge == null)) | .[].id' file.json
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15745 次 |
| 最近记录: |