我的JQ查询结果有问题。原来的json看起来像这样:
[
{
"read": false,
"mex": "message 1",
"id": 1000
},
{
"read": false,
"mex": "message 2",
"id": 2000
},
{
"read": false,
"mex": "message 3",
"id": 3000
}
我想要一个查询,它会给我一个id为2000的记录的结果(例如),这些是准确的:
{
"read": false,
"mex": "message 2",
"id": 2000
}
使用以下查询输出空白记录(" []")
jq "map(select(.read==false))" file.json| jq -r 'map(select(.id==$foo))' --arg foo 2000
答案 0 :(得分:2)
类型不匹配,这就是它不选择的原因。 id
字段都是数字,但您要与字符串进行比较。 --arg
以字符串形式读取参数。您需要将其视为数字或将ID视为字符串。使用--argjson
:
$ jq -r --argjson id 2000 'map(select((.read | not) and .id == $id))' file.json
答案 1 :(得分:0)
这是一个使用.id 2000选择对象的简单过滤器。
.[]
| if .id == 2000 then . else empty end