如何解决如果值存在,我怎样才能让 jmespath 过滤器返回 true,如果不存在则返回 falsepython
{
"name": "Sarah","region": "south west","age": 21,"occupation": "teacher","height": 145,"education": "university","favouriteMovie": "matrix","gender": "female","country": "US","level": "medium","tags": [],"data": "abc","moreData": "xyz","logging" : {
"systemLogging" : [ {
"environment" : "test","example" : [ "this","is","an","example","array" ]
} ]
}
}
如果我想查看 Python 字典中是否存在简单键值对的值,我可以使用 jmespath 查询来执行此操作
"occupation == `teacher`"
>> True
"occupation == `dancer`"
>> False
但是对于更复杂的数据,例如带有列表/数组的嵌套字典,我能做的最好的事情就是过滤以获取值
"logging.systemLogging[?environment == `test`] | [0].enabled"
>> test
"logging.systemLogging[?environment == `prod`] | [0].enabled"
>> None
如何让上面的示例返回 True
或 False
而不是值(如果存在)和 None
或空数组 []
(如果不存在)
解决方法
好吧,你完全可以这样做:
logging.systemLogging[?environment == `test`] | [0].enabled != null
开启
{
"name": "Sarah","region": "south west","age": 21,"occupation": "teacher","height": 145,"education": "university","favouriteMovie": "matrix","gender": "female","country": "US","level": "medium","tags": [],"data": "abc","moreData": "xyz","logging": {
"systemLogging": [{
"environment": "test","example": ["this","is","an","example","array"]
}]
}
}
会导致
false
虽然在这个 JSON 上也是如此——其中添加了 logging.systemLogging[0].enabled: false
:
{
"name": "Sarah","logging": {
"systemLogging": [{
"enabled": false,"environment": "test","array"]
}]
}
}
会导致
true
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。