Análise Python JSON: serialização e desserialização

Aprenda como ler, escrever e analisar dados JSON em Python. Domine json.loads, json.dumps e personalize codificadores/decodificadores JSON.

Experimente no Editor

Visão geral

JSON (JavaScript Object Notation) é o formato leve de intercâmbio de dados que domina APIs da web modernas, configurações e cargas de banco de dados. Como as estruturas JSON se assemelham a dicionários e listas Python, a tradução entre elas é incrivelmente simples. Python vem equipado com um módulo `json` integrado, facilitando a análise de strings JSON em objetos Python e a conversão de objetos Python de volta em strings JSON.

O processo de tradução de um objeto Python (como um dicionário) em uma string JSON bruta é chamado de serialização ou codificação. Isso é tratado por `json.dumps()` (para strings) e `json.dump()` (para escrever diretamente em um arquivo). Você pode controlar parâmetros de formatação como `indent` para embelezar o JSON ou `sort_keys` para manter os atributos ordenados em ordem alfabética. Por outro lado, analisar uma string JSON em um dicionário Python é chamado de desserialização, executada via `json.loads()` e `json.load()`.

Embora os tipos padrão do Python, como strings, números, listas e dictos, sejam serializados para JSON automaticamente, os objetos personalizados (como classes ou objetos de data e hora) não. A tentativa de codificar um objeto personalizado diretamente gerará um `TypeError`. Para superar isso, os desenvolvedores devem criar uma classe de codificador personalizada que herda de `json.JSONEncoder` e substituir o método `.default()` para serializar classes em dicionários legíveis. Dominar a manipulação de JSON é fundamental para a comunicação com serviços da Web externos.

Saída de código e execução

Converter um dicionário em uma string JSON e analisá-lo novamente usando a biblioteca json integrada.

import json

# Python Dictionary representing a user profile
user_profile = {
    "name": "Alex",
    "is_premium": True,
    "skills": ["Python", "Docker"],
    "age": 28
}

# Serialize dictionary to JSON string
json_string = json.dumps(user_profile, indent=2)
print("--- JSON String ---")
print(json_string)

# Deserialize JSON string back to dictionary
parsed_dict = json.loads(json_string)
print("\n--- Parsed Python Dictionary ---")
print(f"Name: {parsed_dict['name']}")
print(f"First Skill: {parsed_dict['skills'][0]}")
Saída terminal
--- JSON String ---
{
  "name": "Alex",
  "is_premium": true,
  "skills": [
    "Python",
    "Docker"
  ],
  "age": 28
}

--- Parsed Python Dictionary ---
Name: Alex
First Skill: Python

Implementação passo a passo

  • Envio de cargas e leitura de dados de APIs REST
  • Armazenando preferências de configuração dentro de arquivos settings.json
  • Passando cargas estruturadas entre microsserviços

Perguntas frequentes

Qual é a diferença entre json.dump e json.dumps?

json.dump (sem o 's') grava dados JSON diretamente em um fluxo de arquivo. json.dumps (com o 's') serializa dados em uma variável de string Python.

Como você lida com erros de decodificação JSON?

Envolva seu código de análise em um bloco try/except que captura 'json.JSONDecodeError' para lidar normalmente com strings JSON malformadas.

Tópicos Relacionados

Recursos Python recomendados

Expanda seu conhecimento com tutoriais interativos relacionados, folhas de dicas e comparações de código.