Script Python Rápido: Serialização e Desserialização de Dados com o Módulo Native json

Script Python Rápido: Serialização e Desserialização de Dados com o Módulo Native json

A conversão de dicionários Python para o formato JSON (e o processo inverso) é fundamental para a criação de APIs REST, armazenamento de configurações e troca de dados entre sistemas. O módulo nativo json resolve essa demanda por meio dos métodos dumps() e loads() para manipulação de strings em memória, além de dump() e load() para leitura e escrita direta em arquivos. Essa abordagem elimina a necessidade de dependências externas e garante rápida serialização de dados.

Python
import json

# --- 1. Dicionário Python para String JSON (Serialização) ---
dados_usuario = {
    "id": 101,
    "nome": "Ana Silva",
    "ativo": True,
    "habilidades": ["Python", "SQL", "Docker"],
    "meta": None
}

# json.dumps() converte o dicionário em uma string no formato JSON
string_json = json.dumps(dados_usuario, indent=4, ensure_ascii=False)
print("--- Dicionário convertido para String JSON ---")
print(string_json)


# --- 2. String JSON para Dicionário Python (Desserialização) ---
json_recebido = '{"id": 102, "nome": "Carlos", "ativo": false, "habilidades": ["Linux"]}'

# json.loads() converte a string JSON de volta para um dicionário Python
dicionario_python = json.loads(json_recebido)
print("\n--- String JSON convertida para Dicionário ---")
print(f"Tipo: {type(dicionario_python)}")
print(f"Nome do usuário: {dicionario_python['nome']}")


# --- 3. Manipulação Direta de Arquivos .json (Leitura e Escrita) ---
arquivo_path = "usuario.json"

# Salvar dicionário diretamente em um arquivo JSON
with open(arquivo_path, "w", encoding="utf-8") as f:
    json.dump(dados_usuario, f, indent=4, ensure_ascii=False)

# LER o arquivo JSON diretamente para um dicionário Python
with open(arquivo_path, "r", encoding="utf-8") as f:
    dados_carregados = json.load(f)

print(f"\nDados lidos do arquivo '{arquivo_path}':", dados_carregados)

Pontos-chave

  • Diferença entre s e sem s: Métodos com o sufixo "s" (dumps, loads) operam com Strings na memória. Já os métodos dump e load trabalham diretamente com objetos de arquivos (file streams).

  • Mapeamento Automático de Tipos: Durante a conversão, o Python traduz automaticamente tipos de dados nativos: True/False viram true/false, None vira null, e tuplas/listas viram arrays em JSON.

  • Parâmetro ensure_ascii=False: Preserva acentos e caracteres especiais (como ç e ã) no arquivo ou string final. Sem esse parâmetro, o Python irá converter caracteres não-ASCII para sequências de escape como \u00e3.

  • Formatação com indent: O argumento indent=4 formata o JSON gerado com recuos legíveis para humanos. Em ambientes de produção que exigem alta performance ou menor consumo de banda, omita esse parâmetro para obter um JSON compactado.

  • Limitação de Objetos Complexos: O módulo json padrão suporta apenas tipos primitivos. Objetos customizados (como instâncias de classes ou datas do módulo datetime) exigem um parâmetro default customizado no json.dumps().

Comentários

Postagens mais visitadas deste blog

Gerando Relatórios em PDF com Python (ReportLab e FPDF)

Python para Computação Quântica: Introdução com Qiskit

C# e Banco de Dados: Como Conectar e Realizar Operações com SQL Server