Como ler e analisar um arquivo JSON em Python
Aprenda como ler, analisar e carregar arquivos JSON em Python usando o módulo json integrado. Domine a conversão de strings JSON em dicionários e vice-versa.
Visão geral
JSON (JavaScript Object Notation) é o formato de dados mais popular para APIs, arquivos de configuração e armazenamento de dados. Python vem com um módulo `json` integrado que torna incrivelmente simples ler, analisar e gravar dados JSON. Como os objetos JSON são mapeados perfeitamente para dicionários Python e as matrizes JSON são mapeadas para listas Python, trabalhar com JSON parece nativo.
Para ler JSON de um arquivo externo, você usa a função `json.load()`, que analisa um fluxo de arquivo e traduz as estruturas JSON em tipos de dados Python. Se os dados JSON já estiverem carregados na memória como uma string, você usa a função `json.loads()` (o 's' significa string). Selecionar a função correta evita travamentos do analisador.
Ao trabalhar com JSON, é uma prática recomendada lidar com erros de codificação e possíveis erros de formatação. Usar `encoding="utf-8"` na instrução `open()` protege seu script contra falhas em caracteres especiais. O agrupamento de operações de arquivo em um bloco `try-except` que captura `json.JSONDecodeError` garante que seu aplicativo seja degradado normalmente se o arquivo JSON estiver malformado.
Saída de código e execução
Este código demonstra a gravação de um arquivo JSON de amostra, a leitura e análise dele em um dicionário Python e o tratamento de uma string JSON.
import json
# Let's write a mock JSON file first
sample_data = {
"user": "developer123",
"skills": ["python", "javascript", "sql"],
"active": True
}
with open("data.json", "w", encoding="utf-8") as f:
json.dump(sample_data, f, indent=4)
# 1. Reading from a JSON file (using json.load)
with open("data.json", "r", encoding="utf-8") as file:
data_from_file = json.load(file)
print("File Content type:", type(data_from_file).__name__)
print("User skill list:", data_from_file["skills"])
# 2. Reading from a JSON string (using json.loads)
json_string = '{"host": "localhost", "port": 5432, "ssl": false}'
data_from_str = json.loads(json_string)
print("\nString Content type:", type(data_from_str).__name__)
print("Database host:", data_from_str["host"])File Content type: dict
User skill list: ['python', 'javascript', 'sql']
String Content type: dict
Database host: localhostImplementação passo a passo
- Importe o módulo json integrado em seu script.
- Abra o arquivo JSON usando open("filename.json", "r", encoding="utf-8") como arquivo.
- Passe o objeto file para json.load(file) para analisar o conteúdo em um dicionário Python.
- Use json.loads(string_data) se precisar analisar uma string JSON bruta já carregada na memória.
Perguntas frequentes
Qual é a diferença entre json.load() e json.loads()?
json.load() aceita um objeto de fluxo semelhante a um arquivo (leitura do disco), enquanto json.loads() aceita uma string padrão ou objeto de bytes contendo conteúdo JSON (leitura da memória).
Como lidar com erros de serialização JSON para classes personalizadas?
O módulo json do Python não pode serializar instâncias de classes personalizadas por padrão. Você deve fornecer uma classe de codificador personalizada estendendo json.JSONEncoder ou extrair os atributos da instância em um dicionário usando primeiro um método auxiliar.
Tópicos Relacionados
Aprenda como ler arquivos em Python. Domine a instrução open, readline, readlines e manipule exceções de arquivo com segurança.
Como escrever em um arquivo em PythonAprenda como escrever texto em arquivos em Python. Domine a diferença entre os modos de gravação ("w") e acréscimo ("a") com gerenciadores de contexto seguros.
Como criar um dicionário em PythonAprenda como criar um dicionário em Python. Entenda a sintaxe literal, o construtor de dict, as compreensões de dict e os inicializadores de valores-chave.
Recursos Python recomendados
Expanda seu conhecimento com tutoriais interativos relacionados, folhas de dicas e comparações de código.
E/S de arquivo Python
Aprenda a ler e escrever arquivos em Python. Domine open(), read(), write() e gerenciadores de contexto para lidar com operações de arquivo com segurança sem vazamentos de recursos.
Folha de referências de operações de arquivo Python
Referência rápida para leitura e gravação de arquivos em Python. Domine modos abertos, gerenciadores de contexto e leitura linha por linha.
Python vs JavaScript: qual linguagem de programação é a melhor?
Uma comparação abrangente entre Python e JavaScript. Explore diferenças de sintaxe, desempenho, casos de uso (backend versus frontend) e exemplos de codificação.