2016-06-21 3 views
4

У меня есть блок JSon, который выглядит немного как это (вы догадались AWS)JMESPath JSON фильтр с несколькими матчами

{ "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-ид)

я могу получить 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 

Любые предложения? Возможно ли это, или мне придется собирать один результирующий набор за раз и рекомбинировать результаты, которые я хочу?

ответ

8

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

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

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

Vpcs[?contains(`["vpc-blabla1", "vpc-blabla2"]`, VpcId)].OtherKey 
+0

Отлично. Я был так близок, я просто не мог видеть ответ в документации. – Sam

+0

Это последнее помогло, спасибо! – DarkNeuron