Отфильтруйте объект по свойству и выберите его с помощью ключа в jmespath
Я пытаюсь отфильтровать свойства объекта в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==
правда]
будет работать, это будет просто массив значений свойств, но мне нужны ключи (a
а такжеc
) также. Есть ли способ сделать это в jmespath?
Все это является частью сборника игр, поэтому, безусловно, был бы способ добиться выбора другим способом (шаблоны Jinja2 или пользовательский плагин), но я хотел попробовать jmespath и решил, что он должен быть способен на такую задачу.