Processando JSON com o comando jq

Elton Minetto
Aug 9, 2017 · 2 min read

Nos últimos anos JSON tornou-se o “esperanto” da Internet, sendo o padrão para a comunicação de APIs e serviços. Por isso processar JSON é algo que os desenvolvedores fazem diariamente e qualquer ferramenta que facilite esse processo é sempre bem-vinda. Uma destas ferramentas é o jq, que vou apresentar neste post.

O jq é uma ferramenta de linha de comando e que pode ser instalada nos principais sistemas operacionais. Como estou usando MacOS instalei usando o comando:

brew install jq

No site oficial é possível ver a documentação para instalação em outros ambientes. Com o jq instalado podemos fazer nossos primeiros testes. Para isso vamos usar o seguinte arquivo JSON:

https://gist.github.com/eminetto/0960739bab52ed4d50d8c6262ec43893

Podemos usar o jq para formatar o arquivo e mostrá-lo colorido em nosso terminal:

cat cr.json| jq

Mas o jq vai além disso. Podemos fazer consultas no arquivo, como por exemplo trazer apenas a informação que desejamos:

cat cr.json| jq .reports[].maintainability

Ele fez uma pesquisa no conteúdo e trouxe apenas os valores encontrados:

124.63257712933509 128.03015432120054

Podemos também fazer operações sobre estes conteúdos. Por exemplo, vamos somar os dois valores:

cat cr.json| jq '[.reports[].maintainability] | add'

A primeira alteração foi incluir os caracteres [ e ] ao redor da nossa pesquisa, transformando o seu conteúdo em um array. Isso é necessário pois o comando add, nativo do jq, faz a soma de valores dentro de um array. O resultado foi:

252.66273145053563

Podemos expandir um pouco mais nosso exemplo calculando a média dos valores:

cat cr.json| jq '[.reports[].maintainability] | add / length'

Este é somente um exemplo simples mas que economizou várias linhas de programação de um projeto que estou trabalhando. Outro exemplo um pouco mais complexo:

cat codeclimate.json | jq -c '[.[] | select(.check_name | contains("Complexity") | not)]' | jq 'map(.remediation_points) | add'

Não vou entrar em detalhes neste exemplo para não alongar demais o post, mas a própria documentação do jq ajuda bastante:

man jq

O jq rapidamente tornou-se uma das minhas ferramentas favoritas e espero que ajude mais desenvolvedores.


Originally published at http://eltonminetto.net/post/2017-08-09-processando-json-com-jq/ on August 9, 2017.

Elton Minetto

Written by

Teacher, speaker, CTO at @codenationbr. http://eltonminetto.net

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade