如何解决有没有办法将 JMESPATH 布尔值转换为相反的值?
我有一个值为 true 的 JSON,我想返回 false。
下面是一个例子:
{"a": {"City": "Hello","flag": false}}
我调用 a.flag
以获取 false
值。但是,我一直无法找到将 false
转换为 true
的方法。
我在 https://jmespath.org/tutorial.html 中尝试过 a.flag == false
,但它无法正常工作。
解决方法
您的尝试无效,因为您的 false
值在条件 a.flag == false
中没有被正确解释。
在执行 a.flag == false
时,您真正在做的是将 JSON 对象的键 false
的值与 a.flag
的值进行比较。
确认这一点的方法是运行查询:
foo.flag == false
在这两个 JSON 之上
-
这将返回{ "false": "some value","foo": { "city": "Brussels","flag": "some value" } }
true
-
这将返回{ "false": "some other value","flag": "some value" } }
false
在 JMESPath 中将值与布尔值进行比较的正确方法是使用 literal expression,因此,将布尔值放在反引号 `true`
中。
随着查询:
foo.flag == `false`
在 JSON 之上
{
"foo": {
"city": "Brussels","flag": false
}
}
我们得到预期:true
当然,正如您所评论的,您可以简单地使用 not-expression:
!(foo.flag)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。