jmespath:区分未找到的键和具有空值的键

时间:2018-07-25 13:03:54

标签: python json jmespath

我正在python中使用jmespath模块搜索嵌套字典。

我遇到的问题是,如果字典中找不到键,我想引发一个异常。但是,某些键具有“无”值,这是完全有效的。在两种情况下,jmespath都找到具有None值的键,或者找不到键,则返回None。

有什么办法可以区分两者吗?据我所知,jmespath没有等同于“功能”。谢谢!

1 个答案:

答案 0 :(得分:0)

此处对此问题进行了详细讨论-https://github.com/jmespath/jmespath.py/issues/113

结果是使用contains检查密钥是否存在

因此,要检查嵌套字典中是否存在foo.bar,可以将search与参数"contains(keys(foo), 'bar')"一起使用

>>> print (jmespath.search('foo.bar', {'foo': {'bar': None}}))
None
>>> jmespath.search("contains(keys(foo), 'bar')", {'foo': {'bar': None}})
True
>>> jmespath.search("contains(keys(foo), 'bar2')", {'foo': {'bar': None}})
False