相关疑难解决方法(0)

按属性过滤对象,并使用jmespath中的键选择

我正在尝试根据子属性的值过滤jmespath中对象的属性,并且只想包含子属性设置为特定值的那些属性.

基于此示例数据:

{
  "a": {
    "feature": {
      "enabled": true,
    }
  },
  "b": {
  },
  "c": {
    "feature": {
      "enabled": false
     }
  }
}
Run Code Online (Sandbox Code Playgroud)

我想获得一个具有启用该功能的所有属性的对象.

{
  "a": {
    "feature": {
      "enabled": true,
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我想我可以使用这个jmespath查询来过滤property. enabled设置为true 的对象.不幸的是,它似乎不起作用而是返回一个空数组.

*[?feature.enabled==`true`]
Run Code Online (Sandbox Code Playgroud)

*.feature.enabled或者*[feature.enabled]只返回没有任何上下文的布尔值.

即使*[?feature.enabled==true ]可以工作,它也只是属性值的数组,但我还需要键(ac).有没有办法在jmespath中实现这一点?

这是一个ansible playbook的所有部分,所以肯定会有一种方法以不同的方式实现选择(Jinja2模板或自定义插件),但我想尝试jmespath并且会推理它应该能够执行这样的任务.

json normalization ansible jmespath

16
推荐指数
3
解决办法
6121
查看次数

标签 统计

ansible ×1

jmespath ×1

json ×1

normalization ×1