我正在尝试根据子属性的值过滤jmespath中对象的属性,并且只想包含子属性设置为特定值的那些属性。
基于此示例数据:
{
"a": {
"feature": {
"enabled": true,
}
},
"b": {
},
"c": {
"feature": {
"enabled": false
}
}
}
我想获得一个具有启用该功能的所有属性的对象。
{
"a": {
"feature": {
"enabled": true,
}
}
}
我想我可以使用这个 jmespath 查询来过滤property. enabled
设置为 true 的对象。不幸的是,它似乎不起作用,而是返回一个空数组。
*[?feature.enabled==`true`]
*.feature.enabled
或*[feature.enabled]
仅返回布尔值而无需任何上下文。
即使*[?feature.enabled==
true]
可以工作,它也只是属性值的数组,但我也需要键(a
和c
)。有没有办法在 jmespath 中实现这一点?
这都是 ansible playbook 的一部分,所以肯定有一种方法可以以不同的方式(Jinja2 模板或自定义插件)实现选择,但我想尝试 jmespath 并且认为它应该能够完成这样的任务。