O comando abaixo funciona:
$ echo '{ "a": [ { "b": "1" }, { "b": "2" } ] }' | jq -r '.a[0].b'
1
Mas se eu tentar obter os valores de todos os b
elementos abaixo a
, recebo o seguinte erro:
$ echo '{ "a": [ { "b": "1" }, { "b": "2" } ] }' | jq -r '.a[*].b'
jq: error: syntax error, unexpected '*' (Unix shell quoting issues?) at <top-level>, line 1:
.a[*].b
jq: 1 compile error
Como devo escapar do curinga? Já tentei várias variantes sem sucesso.
Usar curinga como índice de matriz é uma opção válida de acordo com https://support.smartbear.com/alertsite/docs/monitors/api/endpoint/jsonpath.html#:~:text=JSONPath%20is%20a%20query%20language, que%20precisa de%20to%20ser%20verificado .
O iterador de matriz em
jq
é.[]
. O caractere asterisco não é obrigatório. O comando a seguir deve obter a saída pretendida:Resultado:
Referência adicional: manual jq
Quanto ao motivo pelo qual a sintaxe é diferente,
jq
é uma ferramenta com sintaxe própria para consulta. Não é baseado no padrão JSONPath.