jq - 如何选择字段为“false”的对象?

16

我在实现布尔检查到jq时遇到了问题。 如果我有一个字段 "test",它可以是布尔值true或false,那么我该如何使用select来查找它呢?

最初我尝试了以下内容:

jq '.[] | select(.test=="false")'

但我认为我正在比较字符串,所以这不起作用。

2个回答

27

JSON的布尔值为truefalse,因此只需删除引号,例如:select(.test == false)

如果确实事先知道.test的值严格为布尔值,则可以简化筛选器:

.[] | select(.test|not)

not .test 是怎么样的?https://github.com/stedolan/jq/issues/2486,所以它相当不透明:`select(.test | not)`。 - nyet

0

这里有另一种解决方案

map(select(.test))

这段代码可以工作,因为它假设.test的值是布尔类型,但实际上结果将是一个数组。 - peak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接