我正在尝试根据子属性的值过滤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 ]可以工作,它也只是属性值的数组,但我还需要键(a和c).有没有办法在jmespath中实现这一点?
这是一个ansible playbook的所有部分,所以肯定会有一种方法以不同的方式实现选择(Jinja2模板或自定义插件),但我想尝试jmespath并且会推理它应该能够执行这样的任务.