问题描述
如果我执行
echo '{"foo": "bar","baz": null}' | jq '.baz'
我收到null
作为结果。
但是如果我执行
echo '{"foo": "bar","baz": null}' | jq '.hello'
我也收到null
作为结果。
在第一种情况下,该值为null
,在第二种情况下该值不存在(无法解析)。有什么办法可以区分这两种情况吗?
解决方法
是的,有。内置has
返回一个布尔值,该布尔值表示其参数是否作为键(或索引,如果输入是数组)存在于其输入中。
$ echo '{"foo": null}' | jq 'has("foo")'
true
$ echo '{"foo": null}' | jq 'has("bar")'
false
$ echo '[null]' | jq 'has(0)'
true
$ echo '[null]' | jq 'has(1)'
false