M16 — JSON
Bloco 8 — Reuso e integração · Eixo B · Nível NÍVEL 1 + NÍVEL 2 · LAB
Abertura
Em M15 você instalou e usou requests para se comunicar com serviços
na internet. Mas para que dois programas diferentes — escritos em
linguagens diferentes, rodando em máquinas diferentes — troquem dados
entre si, é preciso um formato comum. Este módulo apresenta o formato
que se tornou padrão de fato para isso: JSON.
Conceito central
JSON (JavaScript Object Notation) é um
formato de texto para representar
dado estruturado — legível
tanto por humanos quanto por máquinas. A estrutura do JSON mapeia quase
diretamente para dicionários e listas em Python: um objeto JSON (entre
{}) vira um dicionário, um array JSON (entre []) vira uma lista. É
por isso que a curva de aprendizado aqui é curta, se você já viu M9.
Python converte entre JSON (que é sempre texto) e estruturas Python
nativas através do módulo padrão json, parte da biblioteca padrão que
você conheceu em M15: json.loads() transforma uma string JSON em
dicionário ou lista Python; json.dumps() faz o caminho inverso,
transformando uma estrutura Python de volta em texto JSON.
Isso conecta direto com M15: bibliotecas como requests normalmente
recebem e devolvem dados em JSON, e muitas já oferecem atalhos — como
resposta.json() — que fazem essa conversão automaticamente, sem você
precisar chamar json.loads() manualmente.
Na prática
Uma string JSON representando um cadastro simples, com um campo aninhado:
E o caminho inverso — transformar uma estrutura Python de volta em texto JSON, formatado para leitura:
Diagrama
A conversão nos dois sentidos entre texto JSON e estruturas Python:
Lab opcional 🔵
A partir de uma resposta JSON de uma API pública gratuita (pode reaproveitar a mesma do lab de M15), extraia e imprima campos específicos usando o que você já sabe sobre dicionários aninhados.