Python: Processamento de Dados JSON

Última atualização: 2026-09-22

JSON (JavaScript Object Notation) é o formato de intercâmbio de dados mais comum na web. Quase todas as APIs Web retornam dados JSON. O módulo json do Python torna fácil converter entre objetos Python e strings JSON.


Funções internas relacionadas:object float bool dict list None int str

1. Objetos Python <-> Strings JSON

▶ Exemplo: Serializando para String JSON

▶ Experimente

Saída:

TEXT 📖 Somente leitura
# Executed successfully

Saída:

JSON
{
  "name": "João Silva",
  "age": 25,
  "is_student": false,
  "scores": [85, 92, 78],
  "address": null
}
💡 ensure_ascii=False é importante: Sem este parâmetro, caracteres não-ASCII são escapados para códigos Unicode. Use-o para preservar caracteres originais. indent=2 formata a saída para legibilidade. Em produção, use indent=None para comprimir em uma única linha, economizando largura de banda.



2. String JSON -> Objetos Python (Desserialização)

▶ Exemplo: Desserializando uma String JSON

▶ Experimente

Saída:

TEXT 📖 Somente leitura
# Executed successfully

(1) Mapeamento de Tipo JSON para Tipo Python

JSON Python
string str
number int / float
boolean bool
null None
array list
object dict


3. E/S de Arquivo JSON

▶ Exemplo: Lendo e Escrevendo Arquivos JSON

TEXT 📖 Somente leitura
import json

# Escrever em arquivo JSON
data = {
    "students": [
        {"name": "João Silva", "age": 20, "score": 85},
        {"name": "Maria Souza", "age": 21, "score": 92},
        {"name": "Pedro Santos", "age": 19, "score": 78}
    ]
}

with open("alunos.json", "w", encoding="utf-8") as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

# Ler arquivo JSON
with open("alunos.json", "r", encoding="utf-8") as f:
    loaded = json.load(f)

print(f"Número de alunos: {len(loaded['students'])}")
for s in loaded["students"]:
    print(f"  {s['name']}: {s['score']}")

▶ Exemplo: Persistência de Dados (Dificuldade ⭐⭐)

▶ Experimente

Saída:

TEXT 📖 Somente leitura
Nenhuma nota ainda


4. Lidando com Tipos de Dados Complexos

Por padrão, o módulo json só suporta tipos básicos. Objetos personalizados precisam de conversão manual:

▶ Exemplo: Serialização Personalizada

▶ Experimente

Saída:

TEXT 📖 Somente leitura
# Function defined successfully


5. Casos de Uso Comuns


Funções internas relacionadas:object float bool dict list None int str

❓ Perguntas Frequentes

P Qual a diferença entre json.dumps() e json.dump()?
R dumps() retorna uma string JSON (s de string); dump() escreve diretamente em um objeto de arquivo. Similarmente, loads() analisa a partir de uma string; load() lê de um objeto de arquivo. O sufixo 's' indica string.
P Quais as vantagens do JSON sobre CSV?
R JSON suporta estruturas aninhadas (dicts dentro de listas, listas dentro de dicts), enquanto CSV só pode representar tabelas planas. JSON preserva tipos de dados automaticamente (números, booleanos, null), enquanto todos os valores CSV são strings. JSON é mais legível. A desvantagem é que arquivos JSON são geralmente maiores que CSV.
P O que acontece se ensure_ascii=False não for definido?
R Caracteres acentuados (como ç, ã, é) serão escapados para formato \uXXXX. A funcionalidade do programa não é afetada — json.loads() os restaurará automaticamente. No entanto, para legibilidade humana, conteúdo escapado é completamente ilegível. Adicione ensure_ascii=False quando precisar visualizar arquivos JSON manualmente.

📖 Resumo



📝 Exercícios

  1. Iniciante (Dificuldade ⭐): Crie um dicionário contendo seu nome, idade e três hobbies (lista). Use json.dumps() para exibir uma string JSON formatada (preserve caracteres, indentação 2).

  2. Intermediário (Dificuldade ⭐⭐): Escreva duas funções: save_contacts(contacts) e load_contacts(). Salve uma lista de contatos (lista de dicts) em contacts.json e carregue automaticamente na inicialização do programa. Cada contato tem nome, telefone e email.

  3. Avançado (Dificuldade ⭐⭐⭐): Implemente um "exportador de dados simples" usando JSON. Dada uma lista de notas de alunos students = [{"name": "João Silva", "scores": {"Português": 85, "Matemática": 92}}], exiba como: 1) Um arquivo JSON formatado; 2) Uma string JSON comprimida (sem indentação); 3) Uma string JSON com chaves ordenadas (sort_keys=True).

Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%