J'essaie de filtrer les propriétés d'un objet dans jmespath en fonction de la valeur d'une sous et que vous souhaitez inclure uniquement les propriétés où la sous-propriété est définie sur une valeur spécifique.objet Filtrer par propriété et sélectionnez avec clé dans jmespath
Sur la base de cet exemple données:
{
"a": {
"feature": {
"enabled": true,
}
},
"b": {
},
"c": {
"feature": {
"enabled": false
}
}
}
Je voudrais obtenir un objet avec toutes les propriétés où la fonction est activée.
{
"a": {
"feature": {
"enabled": true,
}
}
}
Je pensais que je pourrais utiliser cette requête jmespath pour filtrer les objets où property. enabled
est fixé à true. Malheureusement, cela ne semble pas fonctionner et renvoie à la place un tableau vide.
*[?feature.enabled==`true`]
*.feature.enabled
ou *[feature.enabled]
juste retour des valeurs booléennes sans contexte.
Même si *[?feature.enabled==
vrai ]
fonctionnerait, il serait juste un tableau des valeurs de propriété, mais je besoin des clés (a
et c
) aswell. Y at-il un moyen de rendre cela possible dans jmespath? Tout cela fait partie d'un playbook ansible, donc il y aurait certainement un moyen de réaliser la sélection d'une manière différente (templates Jinja2 ou custom plugin) mais je voulais essayer jmespath et raisonner, qu'il devrait être capable de une telle tâche.
Plus que n'importe quoi, vous voulez supprimer certaines clés basées sur des données imbriquées. Quelque chose comme [cette question pour Perl] (http://stackoverflow.com/q/18660309/2947502). Moi aussi j'aimerais savoir si vous pouvez le faire avec JMESPath. – techraf