Я пытаюсь фильтровать свойства объекта в jmespath на основе значения подзадачи и хочу включать только те свойства, где для подзадачи установлено определенное значение.Фильтровать объект по свойству и выбрать с помощью ключа в jmespath
Основываясь на этом примере данные:
{
"a": {
"feature": {
"enabled": true,
}
},
"b": {
},
"c": {
"feature": {
"enabled": false
}
}
}
Я хотел бы получить объект со всеми свойствами, где функция включена.
{
"a": {
"feature": {
"enabled": true,
}
}
}
Я полагал, что я мог бы использовать этот jmespath запрос для фильтрации объектов, где property. enabled
устанавливается истина. Unfortunateley, похоже, не работает и вместо этого возвращает пустой массив.
*[?feature.enabled==`true`]
*.feature.enabled
или *[feature.enabled]
возвращать не только логические значения без какого-либо контекста.
Даже если *[?feature.enabled==
правда ]
будет работать, это будет просто массив значений свойств, но мне нужны ключи (a
и c
), а также. Есть ли способ сделать это в jmespath?
Это часть незанятой пьесы, поэтому, конечно, есть способ добиться выбора по-другому (шаблоны Jinja2 или пользовательский плагин), но я хотел попробовать jmespath и рассуждать, что он должен быть способен такая задача.
Больше чем что-либо запрашивать, вы хотите удалить определенные ключи на основе вложенных данных. Что-то вроде [этот вопрос для Perl] (http://stackoverflow.com/q/18660309/2947502). Я тоже хотел бы знать, можете ли вы сделать это с помощью JMESPath. – techraf