2016-08-26 4 views
3

В примере JSON в нижней части этого вопроса, как я могу подсчитать количество пар ключ/значение в массиве "Tags" с использованием JMESPath?Подсчитайте число экземпляра в массиве с помощью JMESPath

Согласно JMESPath documentation, я могу сделать это с помощью count() функции -

Например, следующее выражение создает массив, содержащий общее количество элементов в объекте Foo с последующими значением Foo [ "бар"].

Однако похоже, что документация неверна. Используя сайт JMESPath, запрос Reservations[].Instances[].[count(@), Tags] выдает результат [ [ null ] ]. Я затем тестируют с помощью командной строки AWS и ошибка была возвращена -

Неизвестная функция: подсчет()

Есть ли на самом деле способ сделать это с помощью JMESPath?

Пример 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" 
         } 
        ] 
       } 
      ] 
     } 
    ] 
} 

ответ

2

Ответ здесь является то, что документация JMESPath шокирует, и по какой-то причине я видел устаревшую документации (проверка в правом нижнем углу экрана, чтобы посмотреть, какую версию вы просматривают

Я могу делать то, что мне нужно сделать, используя length() функцию -

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

Другой вариант:. 'длину (Reser vations []. Экземпляры []. Tags []) ' – haschdl