JMESPath JSON фильтр с несколькими совпадениями

У меня есть блок json, который выглядит примерно так (вы уже догадались из AWS)

{ "Vpcs":[ 
  {
    "VpcId":"vpc-blabla1",
    "OtherKey":"Value"
  },
  {
    "VpcId":"vpc-blabla2",
    "OtherKey":"Value"
  },
  {
    "VpcId":"vpc-blabla3",
    "OtherKey":"Value"
  },
  {
    "VpcId":"vpc-blabla4",
    "OtherKey":"Value"
  }]
}

Я хочу использовать JMESPath для получения значения OtherKey для vpc-blabla1 и vpc-blabla3 (например, может быть любой список vpc-id)

Я могу получить Blabla1 с фильтром JMESpath

Vpcs[?VpcId=='blabla1'].OtherKey

Но я не могу найти синтаксис для нескольких значений? Я пробовал синтаксис Or || и составной синтаксис | но ни один не работает? - Смотрите ниже для вещей, которые я пытался.

 Vpcs[?VpcId=='blabla1' || 'blabla1'].OtherKey
 Vpcs[?VpcId=='blabla1' || ?VpcId=='blabla1'].OtherKey
 Vpcs[(?VpcId=='blabla1') || (?VpcId=='blabla1')].OtherKey
 Vpcs[?VpcId=='blabla1' | ?VpcId=='blabla1'].OtherKey

Какие-либо предложения? Возможно ли это, или мне придется собирать по одному набору результатов за раз и объединять результаты, которые я хочу?

1 ответ

Решение

Общий синтаксис для нескольких [? expr1 || expr2] так что в вашем случае вы можете использовать:

Vpcs[?VpcId=='vpc-blabla1' || VpcId=='vpc-blabla2'].OtherKey

Другой вариант, если у вас много идентификаторов VPC, для которых вы ищите, вы также можете сказать:

Vpcs[?contains(`["vpc-blabla1", "vpc-blabla2"]`, VpcId)].OtherKey
Другие вопросы по тегам