De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


Manipulando JSON com o Shell

Colaboração: Lucas Villela Canoas

Data de Publicação: 5 de outubro de 2021

A informação estruturada em JSON é para o programador o que a tinta é para um pintor, permite que deixemos tudo mais bonito. Se você está fazendo um trabalho por aí, possívelmente vai ter que usar, criar e manipular um JSON, muitas vezes consumindo uma API ou se comunicando com um serviço qualquer. Bash faz tudo isso e temos diversas maneiras que podemos trabalhar em cima.

O jeito Roots

As vezes não tem o que fazer, com recursos escassos, a única saída que temos é usar o que temos na mão. Uma saída é criar uma estrutura JSON usando echo. Não é lá muito vistoso, mas funciona!

NOMES="lucas larissa monica marcelo marcela tux"
echo '{"nomes":['
for nome in $NOMES
do echo "{\"nome\": \"$nome\"},"
done
echo '{"nome":"pinguim"}]'

Com um pouco mais de recursos, podemos fazer mais! Vamos incrementar um JSON:

NOMES="lucas larissa monica marcelo marcela tux"
SOBRENOMES="torres villela canoas macedo oliveira vilela"
JSON=[]
for nomes in $NOMES
do

for sobrenomes in $SOBRENOMES
do
   JSON=$( jq ". | . += [{\"nome\":\"$nomes\", \"sobrenome\":\"$sobrenomes\"}]" <<< $JSON)
done
done
echo $JSON

O jq tem um grande poder de ação, podemos buscar, alterar e pegar dados específicos.

Por exemplo:

jq .[].nome <<< $JSON

assim pegaremos todos os nomes!

Lucas faz ciência da computação na UNESP, trabalha com monitoramento de ambientes usando Zabbix e publica alguns textos no lcsvillela.github.io



Veja a relação completa dos artigos de Lucas Villela Canoas