Tenho um JSON similar ao seguinte. Tenho vários registros e estou tentando extrair o valor do campo para "RecType" do registro que tem a tag where Key==name
e Value==qwerty
.
{
"Records": [
{
"RecType": "type-A",
"Tags": [
{
"Key": "category",
"Value": "foo"
},
{
"Key": "name",
"Value": "qwerty"
}
]
},
{
"RecType": "type-B",
"Tags": [
{
"Key": "category",
"Value": "bar"
},
{
"Key": "name",
"Value": "uiop"
}
]
}
]
}
Estou tentando fazer o comando abaixo, mas ele retorna o RecType para AMBOS os registros, presumivelmente porque o Key==Name
aparece em ambos. Mas o que estou tentando fazer é puxar o registro onde o par Chave/Valor estava name==uiop
; Acho que o que estou fazendo é dizer "puxar todos os registros onde há um Key==name
AND Value==uiop
, o que não é a intenção.
jq ".Records[] | (select(.Tags[].Key==\"Name\"))
| (select(.Tags[].Value==\"uiop\"))"
| jq ".RecType"
Tentei fazer um "and" para as duas instruções select, mas parece que resulta em booleanos, não na correspondência que eu esperava.
Alguma ideia?
Você chegou perto, só precisa aninhar seus
select
s: