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?