有没有办法区分空值和缺少键?

问题描述

如果我执行

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...