微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法将 JMESPATH 布尔值转换为相反的值?

如何解决有没有办法将 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 举报,一经查实,本站将立刻删除。