2016-08-26 1 views
3

Dans l'exemple JSON en bas de cette question, comment puis-je compter le nombre de paires clé/valeur dans le tableau "Tags" en utilisant JMESPath?Comptez le numéro d'instance dans un tableau en utilisant JMESPath

Selon le JMESPath documentation, je peux le faire en utilisant la fonction count() -

Par exemple, l'expression suivante crée un tableau contenant le nombre total d'éléments dans l'objet foo suivi de la valeur de foo [ "bar"].

Cependant, il semble que la documentation soit incorrecte. En utilisant le site Web JMESPath, la requête Reservations[].Instances[].[count(@), Tags] donne le résultat [ [ null ] ]. Je puis testé via la ligne de commande AWS et une erreur a été renvoyée -

Fonction inconnue: nombre()

est-il en fait une façon de le faire en utilisant JMESPath?

Exemple JSON -

{ 
    "Reservations": [ 
     { 
      "Instances": [ 
       { 
        "InstanceId": "i-asdf1234", 
        "InstanceName": "My Instance", 
        "Tags": [ 
         { 
          "Value": "Value1", 
          "Key": "Key1" 
         }, 
         { 
          "Value": "Value2", 
          "Key": "Key2" 
         }, 
         { 
          "Value": "Value3", 
          "Key": "Key3" 
         }, 
         { 
          "Value": "Value4", 
          "Key": "Key4" 
         } 
        ] 
       } 
      ] 
     } 
    ] 
} 

Répondre

2

La réponse est que la documentation JMESPath est choquant, et pour une raison que je voyais de la documentation de la date (vérifiez le coin en bas à droite de l'écran pour voir quelle version vous sont la visualisation

Je peux faire ce que je dois faire en utilisant la fonction length() -

Reservations[].Instances[].Tags[] | length(@) 
+0

Une autre option:. longueur '(Reser vations []. Instances []. Tags []) ' – haschdl