2017-03-17 1 views
1

Compte tenu de la JSON suivante:Comment faire un filtre de "projection d'objet" dans JMESpath, ou comment filtrer une liste?

{ 
    "apps": { 
    "foo": { 
     "version": "1" 
    }, 
    "bar": { 
     "version": "2" 
    } 
    } 
} 

Je voudrais obtenir le nombre d'applications qui ont une version 2. Une projection d'objet

apps.*.version 

donne une liste,

[ 
    "1", 
    "2" 
] 

mais comment filtrer cette liste après cela? Je n'ai pas trouvé d'exemples pour cela dans le tutoriel (puisqu'il n'y a pas de propriété à filtrer comme [?version!=''], bien qu'il semble être un cas d'utilisation assez basique

Répondre

2

J'ai trouvé une solution, en utilisant cette syntaxe, il est possible de faire

apps.*.version | [[email protected]=='2'] 
+0

Je pense qu'il devrait y avoir un point devant l'étoile, pas 'jmespath.search.? ("apps * version |.. [@ == '2'?]", données)' –

+0

@ MaxMurphy: merci, j'ai omis le point. – user140547