En utilisant JMESPath, est-il possible de filtrer la sortie en fonction de l'existence de plusieurs paires clé/valeur dans l'entrée?Sortie de filtre basée sur l'existence de plusieurs paires clé/valeur
Dans l'exemple ci-dessous JSON, ce que je voudrais faire est d'extraire uniquement les objets qui contiennent ces paires clé/valeur dans Tags
-
Environnement/ABC
Projet/Projet2
Le plus proche que je peux obtenir est de sélectionner un seul Tag correspondant, mais j'ai besoin du reste de l'objet, et je dois également faire correspondre à l'autre paire clé/valeur -
Stacks[*].Tags[?Key=='Environment' && Value=='ABC']
Voici une exaple entrée JSON -
{
"Stacks": [
{
"StackId": "abc123",
"Tags": [
{
"Value": "Project 1",
"Key": "Project"
},
{
"Value": "ABC",
"Key": "Environment"
}
],
"CreationTime": "2016-07-20T14:49:27.891Z",
"StackName": "TestStack1",
"NotificationARNs": [],
"StackStatus": "CREATE_COMPLETE",
"DisableRollback": false
},
{
"StackId": "xyz123",
"Tags": [
{
"Value": "Project 1",
"Key": "Project"
},
{
"Value": "XYZ",
"Key": "Environment"
}
],
"CreationTime": "2016-07-20T14:49:27.891Z",
"StackName": "TestStack2",
"NotificationARNs": [],
"StackStatus": "CREATE_COMPLETE",
"DisableRollback": false
},
{
"StackId": "asd123",
"Tags": [
{
"Value": "Project 2",
"Key": "Project"
},
{
"Value": "ABC",
"Key": "Environment"
}
],
"CreationTime": "2016-07-20T14:49:27.891Z",
"StackName": "TestStack3",
"NotificationARNs": [],
"StackStatus": "CREATE_COMPLETE",
"DisableRollback": false
}
]
}
Et voici la sortie que je requiers -
{
"StackId": "asd123",
"Tags": [
{
"Value": "Project 2",
"Key": "Project"
},
{
"Value": "ABC",
"Key": "Environment"
}
],
"CreationTime": "2016-07-20T14:49:27.891Z",
"StackName": "TestStack3",
"NotificationARNs": [],
"StackStatus": "CREATE_COMPLETE",
"DisableRollback": false
}
brillant, Merci. Pour être complet, j'ai utilisé 'Stacks [? Mots clés[? Valeur == 'ABC' && Touche == 'Environnement'] && Tags [? Valeur == 'Project' && Key == 'Project2']] 'et ça fonctionne comme un charme. –