如何在JMESPath中区分null与false并判断键是否存在
JSON键存在性判断:不存在返回true,存在返回false
要实现键不存在时返回true,键存在(无论值为false、数字或其他类型)时返回false,核心是区分「键不存在返回的null」和「键存在但值为false/其他类型」,避开not_null把false和null同等处理的问题。
适用的表达式
根据你使用的JSON查询引擎,推荐以下方案:
- JMESPath引擎:直接用表达式
my_key == null- 验证场景:
- 键存在(
{"my_key": false})→ 返回false - 键存在(
{"my_key": 123})→ 返回false - 键不存在(
{"my_other_key": false})→ 返回true
- 键存在(
- 验证场景:
- 支持JS风格判断的引擎:用
typeof(my_key) === 'undefined',效果和上面一致 - 通用逻辑兼容方案:用组合表达式
!(my_key != null),本质是仅当my_key为null时返回true
方案逻辑说明
只有当键完全不存在时,表达式my_key才会返回null;只要键存在,哪怕值是false、0这类“假值”,都不会等于null,刚好匹配你的需求。
内容的提问来源于stack exchange,提问作者Harriv
相关产品推荐
相关产品推荐

