Como Trabalhar com JSON no Python

Tempo de leitura: 13 minutos
Logo do Python + texto 'JSON'

JSON (JavaScript Object Notation) é um dos formatos de dados mais populares do mundo. Se você trabalha com APIs, armazenamento de dados ou troca de informações entre sistemas, certamente já encontrou JSON. A boa notícia é que Python oferece ferramentas nativas poderosas para trabalhar com esse formato de maneira simples e eficiente.

Neste guia completo, você vai aprender tudo sobre como manipular JSON no Python. Vamos explorar desde conceitos básicos até técnicas avançadas, com exemplos práticos que você pode usar nos seus projetos hoje mesmo.

O Que é JSON e Por Que é Importante

JSON é um formato leve de intercâmbio de dados. Ele foi criado para ser fácil de ler para humanos e simples de processar para máquinas. Apesar do nome carregar “JavaScript”, JSON é independente de linguagem e funciona perfeitamente com Python e diversas outras linguagens.

A estrutura do JSON é muito parecida com os dicionários do Python. Ele usa pares de chave-valor para organizar informações. Por exemplo, veja como um objeto JSON simples se parece:

JSON
{
  "nome": "Maria Silva",
  "idade": 28,
  "ativo": true,
  "hobbies": ["leitura", "corrida", "programação"],
  "endereco": {
    "cidade": "São Paulo",
    "estado": "SP"
  }
}

Este formato é amplamente utilizado em APIs REST, bancos de dados NoSQL e na comunicação entre aplicações web. Empresas como YouTube, Twitter, Google Maps e NASA usam JSON para transmitir dados entre servidores e aplicações.

Para entender melhor como trabalhar com JSON no Python, confira este excelente vídeo tutorial do Diego Mariano:

YouTube player

O vídeo mostra de forma prática e objetiva os principais conceitos para manipular arquivos JSON usando Python.

A Biblioteca JSON do Python

Python possui um módulo nativo chamado json que faz parte da biblioteca padrão. Isso significa que você não precisa instalar nada extra para começar a trabalhar com JSON. Basta importar o módulo:

import json

Este módulo oferece quatro funções principais que cobrem praticamente todas as necessidades de manipulação de JSON. Vamos explorar cada uma delas em detalhes.

Convertendo Strings JSON para Objetos Python com json.loads()

A função json.loads() converte uma string JSON em um objeto Python. O “s” no final de “loads” significa “string”. Essa é uma das operações mais comuns ao trabalhar com dados JSON.

Veja um exemplo prático:

Python
import json

# String JSON
json_string = '{"nome": "João", "idade": 30, "cidade": "Rio de Janeiro"}'

# Convertendo para dicionário Python
dados = json.loads(json_string)

print(dados)
print(type(dados))
print(dados["nome"])  # Acessando valores

Resultado:

{'nome': 'João', 'idade': 30, 'cidade': 'Rio de Janeiro'}
<class 'dict'>
João

Quando você usa json.loads(), o JSON é transformado em estruturas Python correspondentes. Objetos JSON viram dicionários, arrays viram listas, strings permanecem strings, números viram int ou float, e assim por diante.

Lendo Arquivos JSON com json.load()

Quando você tem um arquivo JSON salvo no seu computador, usa a função json.load() (sem o “s”). Ela lê diretamente de um arquivo e converte para Python.

Imagine que você tem um arquivo chamado dados.json:

JSON
{
  "usuarios": [
    {"nome": "Ana", "nivel": "admin"},
    {"nome": "Carlos", "nivel": "usuario"}
  ]
}

Para ler este arquivo:

Python
import json

with open('dados.json', 'r', encoding='utf-8') as arquivo:
    dados = json.load(arquivo)
    
print(dados["usuarios"][0]["nome"])  # Ana

O uso de encoding=’utf-8′ é importante para garantir que caracteres especiais do português sejam lidos corretamente. Trabalhar com arquivos externos é algo comum, e conhecer o Python para Excel também pode ser útil para manipular diferentes formatos de dados.

Convertendo Objetos Python para Strings JSON com json.dumps()

A função json.dumps() faz o processo inverso. Ela pega um objeto Python, como um dicionário, e converte em uma string JSON. O “s” aqui também significa “string”.

Python
import json

pessoa = {
    "nome": "Beatriz",
    "idade": 25,
    "profissao": "Desenvolvedora",
    "linguagens": ["Python", "JavaScript", "Java"]
}

# Convertendo para JSON
json_string = json.dumps(pessoa)
print(json_string)
print(type(json_string))

Resultado:

{"nome": "Beatriz", "idade": 25, "profissao": "Desenvolvedora", "linguagens": ["Python", "JavaScript", "Java"]}
<class 'str'>

Note que o JSON resultante está em uma única linha. Para tornar mais legível, você pode usar o parâmetro indent:

Python
json_formatado = json.dumps(pessoa, indent=4, ensure_ascii=False)
print(json_formatado)

O parâmetro ensure_ascii=False garante que caracteres acentuados sejam exibidos corretamente, em vez de serem convertidos para sequências de escape Unicode.

Salvando Dados em Arquivos JSON com json.dump()

Para salvar dados Python em um arquivo JSON, use json.dump() (sem o “s”). Esta função é perfeita quando você quer armazenar configurações, resultados de processamento ou qualquer dado estruturado.

Python
import json

produtos = {
    "produtos": [
        {"id": 1, "nome": "Notebook", "preco": 3500.00},
        {"id": 2, "nome": "Mouse", "preco": 89.90},
        {"id": 3, "nome": "Teclado", "preco": 250.00}
    ]
}

with open('produtos.json', 'w', encoding='utf-8') as arquivo:
    json.dump(produtos, arquivo, indent=4, ensure_ascii=False)

print("Arquivo salvo com sucesso!")

Este código cria um arquivo chamado produtos.json com os dados formatados de forma legível. Dominar essas operações é essencial para quem está aprendendo Python.

Tabela de Conversão entre Python e JSON

Entender como os tipos de dados são convertidos entre Python e JSON é fundamental. Confira esta tabela de equivalências:

Tipo PythonTipo JSON
dictobject
list, tuplearray
strstring
int, floatnumber
Truetrue
Falsefalse
Nonenull

Uma diferença importante: quando você converte uma tupla para JSON, ela vira um array. Quando você lê de volta, ela vira uma lista, não uma tupla novamente.

Trabalhando com JSON em APIs

Um dos usos mais comuns de JSON é consumir dados de APIs. Veja um exemplo prático usando a biblioteca requests:

Python
import json
import requests

# Fazendo requisição para uma API pública
resposta = requests.get('https://api.github.com/users/python')

# A resposta já vem em JSON
dados = resposta.json()

print(f"Nome: {dados['name']}")
print(f"Biografia: {dados['bio']}")
print(f"Repositórios públicos: {dados['public_repos']}")

A biblioteca requests possui um método .json() que automaticamente converte a resposta para um dicionário Python. Isso torna muito simples trabalhar com APIs REST.

Manipulando JSON Complexo com Estruturas Aninhadas

No mundo real, JSON geralmente tem estruturas mais complexas com objetos dentro de objetos e arrays dentro de arrays. Veja como navegar por essas estruturas:

Python
import json

dados_complexos = {
    "empresa": "Tech Solutions",
    "funcionarios": [
        {
            "nome": "Pedro",
            "cargo": "Desenvolvedor",
            "skills": ["Python", "Django", "PostgreSQL"]
        },
        {
            "nome": "Julia",
            "cargo": "Data Scientist",
            "skills": ["Python", "Pandas", "Machine Learning"]
        }
    ]
}

# Salvando
with open('empresa.json', 'w', encoding='utf-8') as f:
    json.dump(dados_complexos, f, indent=2, ensure_ascii=False)

# Lendo e acessando dados aninhados
with open('empresa.json', 'r', encoding='utf-8') as f:
    empresa = json.load(f)
    
# Navegando pela estrutura
for funcionario in empresa["funcionarios"]:
    print(f"{funcionario['nome']} - {funcionario['cargo']}")
    print(f"Skills: {', '.join(funcionario['skills'])}")
    print()

Usar loops e estruturas condicionais facilita muito o processamento de JSON complexo.

Tratamento de Erros ao Trabalhar com JSON

Nem sempre o JSON que você recebe está formatado corretamente. É importante usar try-except para capturar erros:

Python
import json

json_invalido = '{"nome": "Carlos", "idade": 30,'  # JSON incompleto

try:
    dados = json.loads(json_invalido)
except json.JSONDecodeError as erro:
    print(f"Erro ao decodificar JSON: {erro}")
    print(f"Posição do erro: linha {erro.lineno}, coluna {erro.colno}")

O tratamento adequado de erros torna seu código mais robusto e profissional. Isso é especialmente importante quando você trabalha com dados externos que podem estar malformados.

Recursos Adicionais e Próximos Passos

Agora que você domina JSON no Python, pode explorar tópicos mais avançados:

Web APIs: Aprenda a criar APIs com FastAPI que trabalham com JSON.

Web Scraping: Muitos sites retornam dados em JSON que podem ser extraídos com BeautifulSoup e Requests.

Bancos NoSQL: Bancos como MongoDB armazenam dados em formato similar ao JSON.

Validação de Schema: Use bibliotecas como jsonschema para validar estruturas JSON complexas.

Para continuar evoluindo, consulte a documentação oficial do módulo json e pratique com projetos reais. Seguir um roadmap Python estruturado também ajuda muito no aprendizado.

Perguntas Frequentes (FAQ)

1. Qual a diferença entre json.load() e json.loads()?
json.load() lê JSON de um arquivo, enquanto json.loads() lê de uma string. Use load para arquivos e loads para strings.

2. Como lidar com caracteres especiais em JSON?
Use ensure_ascii=False ao serializar e encoding=’utf-8′ ao abrir arquivos para preservar acentos e caracteres especiais.

3. JSON é case sensitive?
Sim, JSON diferencia maiúsculas de minúsculas. “nome” e “Nome” são chaves diferentes.

4. Posso converter qualquer objeto Python para JSON?
Não. Apenas tipos básicos são suportados nativamente. Para outros tipos, você precisa criar encoders customizados.

5. Como validar se um JSON está correto?
Use try-except com json.loads() para capturar erros de sintaxe ou use validadores online antes de processar.

6. JSON é mais lento que outros formatos?
JSON é relativamente rápido, mas para grandes volumes pode ser mais lento que formatos binários como Protocol Buffers.

7. Como trabalhar com JSON muito grande?
Processe linha por linha em vez de carregar tudo na memória de uma vez. Use streaming quando possível.

8. Posso comentar dentro de um arquivo JSON?
Não. JSON puro não suporta comentários. Considere usar JSONC ou adicionar campos específicos para documentação.

9. Como converter JSON para CSV ou Excel?
Use Pandas para ler o JSON e depois salvar em CSV ou Excel com to_csv() ou to_excel().

10. É seguro confiar em JSON de fontes externas?
Sempre valide e sanitize dados JSON externos. Nunca execute código diretamente de JSON não confiável.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Conteúdo do artigo

    Artigos relacionados

    Programador pensando olhando para a tela
    Fundamentos
    Foto do Leandro Hirt

    Lógica de Programação com Python para Iniciantes

    Aprender lógica de programação com Python é uma das formas mais simples e agradáveis de começar no universo da tecnologia.

    Ler mais

    Tempo de leitura: 8 minutos
    09/12/2025
    Palavra Python escrita à mão em superfície amarela com desenho de carinha sorrindo.
    Fundamentos
    Foto do Leandro Hirt

    List Comprehension no Python para Iniciantes

    Aprenda list comprehension no Python de forma simples e prática. Descubra como criar listas de forma mais eficiente e elegante

    Ler mais

    Tempo de leitura: 13 minutos
    08/12/2025
    texto 'in' com o logo do Python ao lado
    Fundamentos
    Foto do Leandro Hirt

    Como usar o operador in no Python

    O operador in é uma das ferramentas mais úteis na programação Python. Ele permite verificar se um elemento existe dentro

    Ler mais

    Tempo de leitura: 15 minutos
    08/12/2025
    Logo do Python estilizada
    Fundamentos
    Foto do Leandro Hirt

    Todas as Funções Built-in do Python Explicadas

    Descubra todas as funções built-in do Python explicadas com exemplos práticos. Aprenda a usar print(), len(), input(), type() e mais

    Ler mais

    Tempo de leitura: 14 minutos
    08/12/2025
    Ilustração de automação usando Python
    FundamentosProjetos
    Foto do Leandro Hirt

    Python para Automação: 20 Scripts Prontos para Usar

    Descubra 20 scripts prontos de Python para automação que vão transformar seu dia a dia. Organize arquivos, envie e-mails, extraia

    Ler mais

    Tempo de leitura: 24 minutos
    07/12/2025
    Janela de erro com a logo do Python
    Fundamentos
    Foto do Leandro Hirt

    Os 7 erros mais comuns ao programar em Python

    Programar em Python é uma ótima escolha para quem está começando na área de tecnologia. A linguagem é simples, clara

    Ler mais

    Tempo de leitura: 8 minutos
    06/12/2025

    Minicurso de Python

    Insira seu e-mail e para receber acesso às aulas agora mesmo