{
"vehicle": [
{
"type": "car",
"features": [
{
"airbags": "yes",
"engine": [
{
"electric": "yes",
"horsepower": "1000"
}
],
"number": "ABCD 1234"
}
],
"price": "100000"
},
{
"type": "truck",
"features": [],
"price": "500000"
},
{
"type": "train",
"features": [
{
"airbags": "no",
"engine": [
{
"horsepower": "10000"
}
],
"number": "MNOPQRST"
}
],
"price": "100000"
}
]
}
Usando jq
ou jmespath
, quero o valor de type
onde vehicle[].features[]
é uma matriz vazia ou está faltando um vehicle[].features[].engine[].electric
elemento.
Portanto, este json deve me listar truck
e train
como o caminhão tem uma matriz vazia vehicle[].features[]
e o elemento train está ausente vehicle[].features[].engine[].electric
.
Dada sua entrada particular onde parece
features
eengines
sempre tem no máximo um elemento, você deve ser capaz de fazer:Ou:
para
type
aquelesvehicle
s cujo primeiroengine
do primeirofeatures
temnot
umaelectric
chave.Ou se como eu você conhece
perl
ou já conhece outra linguagem de programação e prefere não aprender outra (e muito específica) comojq
s:(ou
unless defined($_->{features}[0]->{engine}[0]->{electric})
).