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
se sems: Métodos com o sufixo "s" (dumps,loads) operam com Strings na memória. Já os métodosdumpeloadtrabalham 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/Falseviramtrue/false,Noneviranull, 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 argumentoindent=4formata 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
jsonpadrão suporta apenas tipos primitivos. Objetos customizados (como instâncias de classes ou datas do módulodatetime) exigem um parâmetrodefaultcustomizado nojson.dumps().

Comentários
Postar um comentário