Trabalhando com JSON em Python – Salvando e Lendo Dados

Se você já precisou salvar informações estruturadas de forma organizada em um arquivo ou trocar dados entre sistemas diferentes, provavelmente se deparou com o formato JSON. Ele é leve, simples, fácil de ler (tanto para humanos quanto para máquinas) e se tornou o padrão mundial para troca de dados na web.

No Python, manipular JSON é muito prático graças ao módulo json, que já vem incluído na biblioteca padrão da linguagem. Neste artigo, você vai aprender:

  • O que é JSON e por que ele é tão usado.

  • Como converter dados de Python para JSON.

  • Como salvar JSON em arquivos.

  • Como ler JSON de arquivos.

  • Como manipular os dados carregados.

  • Exemplos práticos e dicas úteis.


🔹 O que é JSON?

JSON significa JavaScript Object Notation. Apesar do nome, ele não está restrito ao JavaScript. É um formato textual baseado em pares chave → valor e listas ordenadas.

Exemplo de um arquivo JSON:

{
  "nome": "Ana",
  "idade": 28,
  "cursos": ["Python", "Data Science", "Flask"],
  "ativo": true
}

Esse formato é amplamente utilizado em:


🔹 Trabalhando com JSON no Python

Python possui o módulo json, que fornece funções simples para conversão:

  • json.dumps() → Converte um objeto Python em uma string JSON.

  • json.dump() → Converte e salva diretamente em um arquivo.

  • json.loads() → Converte uma string JSON para objeto Python.

  • json.load() → Lê um arquivo JSON e converte para objeto Python.


🔹 Convertendo Python para JSON (Serialização)

Chamamos de serialização o processo de transformar um objeto Python em JSON.

Exemplo:

import json

# Objeto Python
pessoa = {
    "nome": "Carlos",
    "idade": 35,
    "cursos": ["Python", "Django", "Machine Learning"],
    "ativo": True
}

# Convertendo para string JSON
json_string = json.dumps(pessoa, indent=4, ensure_ascii=False)
print(json_string)

Saída:

{
    "nome": "Carlos",
    "idade": 35,
    "cursos": [
        "Python",
        "Django",
        "Machine Learning"
    ],
    "ativo": true
}

📌 Dica:

  • O parâmetro indent deixa o JSON mais legível.

  • ensure_ascii=False mantém acentos e caracteres especiais em português.


🔹 Salvando JSON em Arquivo

Para salvar diretamente em um arquivo .json, usamos json.dump().

import json

dados = {
    "produto": "Notebook",
    "preço": 3500.75,
    "estoque": 12,
    "disponível": True
}

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

print("Arquivo salvo com sucesso!")

Isso gera um arquivo chamado produto.json no mesmo diretório.


🔹 Lendo JSON de Arquivo

Para recuperar os dados, usamos json.load().

import json

with open("produto.json", "r", encoding="utf-8") as arquivo:
    dados = json.load(arquivo)

print(dados)
print("Produto:", dados["produto"])
print("Preço:", dados["preço"])

Saída:

{'produto': 'Notebook', 'preço': 3500.75, 'estoque': 12, 'disponível': True}
Produto: Notebook
Preço: 3500.75

📌 Note que o JSON foi convertido automaticamente para um dicionário Python!


🔹 Convertendo String JSON para Python

Às vezes recebemos JSON como texto (ex: resposta de uma API). Nesse caso, usamos json.loads().

import json

json_texto = '{"nome": "Juliana", "idade": 25, "ativo": false}'
dados = json.loads(json_texto)

print(dados)
print(type(dados))

Saída:

{'nome': 'Juliana', 'idade': 25, 'ativo': False}
<class 'dict'>

🔹 Convertendo Python para String JSON

Para enviar dados via API ou salvar em banco de dados, usamos json.dumps().

import json

carro = {
    "marca": "Toyota",
    "modelo": "Corolla",
    "ano": 2022,
    "opcionais": ["Ar-condicionado", "Airbag", "ABS"]
}

json_texto = json.dumps(carro, indent=2, ensure_ascii=False)
print(json_texto)

🔹 Exemplo Prático: Agenda de Contatos em JSON

Vamos criar uma mini agenda que salva contatos em JSON.

import json

# Função para carregar os contatos de um arquivo JSON
def carregar_contatos():
    try:
        with open("contatos.json", "r", encoding="utf-8") as arquivo:
            return json.load(arquivo)
    except FileNotFoundError:
        return []

# Função para salvar contatos no arquivo
def salvar_contatos(contatos):
    with open("contatos.json", "w", encoding="utf-8") as arquivo:
        json.dump(contatos, arquivo, indent=4, ensure_ascii=False)

# Adicionando um novo contato
contatos = carregar_contatos()
novo = {"nome": "Mariana", "telefone": "99999-8888", "email": "mariana@email.com"}
contatos.append(novo)
salvar_contatos(contatos)

print("Contato adicionado com sucesso!")

Esse código cria (ou atualiza) um arquivo contatos.json que pode armazenar todos os registros da agenda.


🔹 Dicas Importantes

  • Sempre use encoding="utf-8" para evitar problemas com acentos.

  • Se for lidar com grandes volumes de dados, considere compactar o JSON (indent=None).

  • Para trabalhar com APIs, o Python permite transformar facilmente respostas em JSON com requests.get(...).json().


Conclusão

O JSON é indispensável no ecossistema Python, seja para armazenar informações localmente ou trocar dados com sistemas externos.
Com o módulo json, você consegue:

  • Converter objetos Python em JSON e vice-versa.

  • Salvar e carregar dados em arquivos.

  • Criar aplicações que interagem com APIs e persistem informações de forma organizada.

Comentários

Postagens mais visitadas deste blog

Laços de Repetição em Python: Conceitos e Exemplos Práticos

Manipulação de Arquivos no C#: Como Ler, Escrever e Trabalhar com Arquivos de Forma Simples

Como Instalar o Xamarin com C#: Passo a Passo Completo