Vamos lá...
No meu workflow, eu uso muito para formatar, procurar valores e validar dados em resultados das APIs que eu sou responsável.
Aqui são alguns exemplos do que eu uso.
Lembrando, que o jq
interpreta o JSON que vem pelo stdin
da console ou através de um arquivo que vc passa como parâmetro $2
. A sitáxe básica do jq
é:
jq [options] <filtros|patterns|comandos|funções|e tudo q há de bom> [arquivo...]
jq [options] <filtros|patterns|comandos|funções|e tudo q há de bom> [strings...]
jq [options] <filtros|patterns|comandos|funções|e tudo q há de bom> [JSON_TEXTS...]
Formatar o Json
Bem simples, só redirecionar a saída do curl
para o jq
... e simples assim...
curl --silent "https://query1.finance.yahoo.com/v11/finance/quoteSummary/aapl?modules=financialData" | jq
Acessar Propriedades
curl --silent "https://query1.finance.yahoo.com/v11/finance/quoteSummary/aapl?modules=financialData" | jq ".quoteSummary.result"
Vertores em JSON
Iterar Vetores
curl --silent "https://query1.finance.yahoo.com/v11/finance/quoteSummary/aapl?modules=financialData" | jq ".quoteSummary.result[] | .financialData.profitMargins"
Acessar pelo índice
curl --silent "https://query1.finance.yahoo.com/v11/finance/quoteSummary/aapl?modules=financialData" | jq ".quoteSummary.result[0] | .financialData.operatingMargins"
Usar funções do JQ
Como por exemplo, listar todas as chaves de um objeto JSON
curl --silent "https://query1.finance.yahoo.com/v11/finance/quoteSummary/aapl?modules=financialData" | jq ".quoteSummary.result[0].financialData | keys"
Kubernetes com JQ
Copiar Secrets de um namespace para outro
Ok, bem nichado esse exemplo, mas é bem util!
kubectl get secrets -o json --namespace | \ jq '.items[].metadata.namespace = ""' | \ kubectl create-f -
Listar status de todos os seus pods de uma namespace
kubectl -n <namespace> get pods -ojson | jq '.items[].status'
Para saber mais...
Este site, https://www.baeldung.com/linux/jq-command-json tem mais e mais exemplos de uso do jq
Espero ter ajudo a turma.
Abraço!