Trabalhando com Dados JSON em Python
JSON (JavaScript Object Notation) é um formato de dados leve e amplamente utilizado para armazenar e transmitir informações. Embora seu nome inclua "JavaScript", o JSON é independente de linguagem e é suportado por diversas linguagens de programação, incluindo Python. Neste artigo, exploraremos como manipular dados JSON em Python, desde a conversão básica até aplicações práticas com APIs.
Introdução ao JSON
JSON estrutura dados como pares de chave-valor e listas ordenadas, semelhante a dicionários e listas em Python. Um exemplo de JSON:
{
"pessoas": [
{
"nome": "Alice",
"telefone": "123-456",
"emails": ["alice@email.com"],
"possui_licenca": true
},
{
"nome": "Bob",
"emails": null
}
]
}Conversão entre JSON e Objetos Python
A biblioteca padrão json do Python permite converter JSON em objetos Python e vice-versa.
1. Convertendo uma String JSON para um Dicionário Python
Use json.loads() para transformar uma string JSON em um dicionário:
import json
dados_json = '''
{
"pessoas": [
{
"nome": "Alice",
"telefone": "123-456",
"emails": ["alice@email.com"],
"possui_licenca": true
}
]
}
'''
dados_python = json.loads(dados_json)
print(type(dados_python)) # Saída: <class 'dict'>2. Convertendo um Objeto Python para uma String JSON
Use json.dumps() para serializar dicionários em strings JSON. Parâmetros como indent e sort_keys formatam a saída:
# Remover a chave 'telefone'
for pessoa in dados_python['pessoas']:
del pessoa['telefone']
nova_string_json = json.dumps(dados_python, indent=2, sort_keys=True)
print(nova_string_json)Trabalhando com Arquivos JSON
1. Lendo um Arquivo JSON
Use json.load() para carregar dados de um arquivo:
with open('estados.json', 'r') as arquivo:
dados = json.load(arquivo)
# Acessar dados
for estado in dados['estados']:
print(f"{estado['nome']} ({estado['abreviacao']})")2. Escrevendo em um Arquivo JSON
Use json.dump() para salvar um dicionário em um arquivo JSON:
# Remover códigos de área
for estado in dados['estados']:
del estado['codigo_area']
with open('novos_estados.json', 'w') as arquivo:
json.dump(dados, arquivo, indent=2)Exemplo Prático: Integração com API de Câmbio
Abaixo está um exemplo de como consumir dados da ExchangeRate-API para converter USD em outras moedas:
import json
from urllib.request import urlopen
# Passo 1: Obter Dados da API
url = "https://open.er-api.com/v6/latest/USD"
resposta = urlopen(url)
dados_json = json.loads(resposta.read().decode('utf-8'))
# Passo 2: Processar os Dados
taxas_usd = dados_json['rates'] # Dicionário com as taxas
# Converter USD para EUR
valor_usd = 50
valor_eur = valor_usd * taxas_usd['EUR']
print(f"{valor_usd} USD = {valor_eur:.2f} EUR")
Explicação
Obtenção dos dados: Utiliza-se
urlopen()para fazer a requisição à API ejson.loads()para transformar os dados recebidos em um dicionário Python.Processamento: O dicionário
dados_json['rates']contém as taxas de câmbio baseadas no USD.Conversão: Multiplica-se o valor em dólares pela taxa do euro para obter a conversão.
Exemplo de saída:
50 USD = 45.83 EURConclusão
JSON é essencial para integração de sistemas e APIs. Com Python, manipular dados JSON torna-se intuitivo através da biblioteca json, que simplifica a conversão entre strings/arquivos JSON e objetos Python. Aplicações práticas incluem desde configurações de sistemas até análise de dados em tempo real via APIs.
Dica: Explore outras APIs públicas (como Twitter ou GitHub) para praticar o consumo e processamento de JSON em projetos reais.
Script Comentado: Criar, Ler e Manipular Arquivos JSON
O que esse script faz:
Cria o arquivo
estados.jsoncom dados simulados.Lê e imprime os nomes dos estados e suas abreviações.
Remove os
codigo_areade cada estado.Salva o resultado em
novos_estados.json.
import json # Importa o módulo json para ler e escrever arquivos JSON
# Etapa 1: Criar o arquivo 'estados.json' com dados simulados
dados_iniciais = {
"estados": [ # Uma lista de dicionários, cada um representando um estado brasileiro
{"nome": "São Paulo", "abreviacao": "SP", "codigo_area": 11},
{"nome": "Rio de Janeiro", "abreviacao": "RJ", "codigo_area": 21},
{"nome": "Minas Gerais", "abreviacao": "MG", "codigo_area": 31},
{"nome": "Bahia", "abreviacao": "BA", "codigo_area": 71},
{"nome": "Paraná", "abreviacao": "PR", "codigo_area": 41}
]
}
# Salva os dados no arquivo 'estados.json'
with open('estados.json', 'w', encoding='utf-8') as f:
# json.dump() escreve os dados no arquivo no formato JSON
# indent=2 deixa o JSON identado (mais legível)
# ensure_ascii=False permite que acentos e caracteres especiais sejam salvos corretamente
json.dump(dados_iniciais, f, indent=2, ensure_ascii=False)
print("✅ Arquivo 'estados.json' criado com sucesso!\n")
# Etapa 2: Ler o arquivo JSON e acessar os dados
with open('estados.json', 'r', encoding='utf-8') as f:
# json.load() carrega os dados do arquivo para um dicionário Python
dados = json.load(f)
# Exibe os estados e suas abreviações
print("📄 Estados e Abreviações:")
for estado in dados['estados']:
# Acessa os campos 'nome' e 'abreviacao' de cada estado
print(f"{estado['nome']} ({estado['abreviacao']})")
# Etapa 3: Remover os códigos de área de cada estado
for estado in dados['estados']:
# Verifica se o campo 'codigo_area' existe e o remove
if 'codigo_area' in estado:
del estado['codigo_area']
# Salva os dados modificados em um novo arquivo chamado 'novos_estados.json'
with open('novos_estados.json', 'w', encoding='utf-8') as f:
# json.dump() novamente para salvar os dados modificados
json.dump(dados, f, indent=2, ensure_ascii=False)
print("\n✅ Arquivo 'novos_estados.json' salvo sem os códigos de área.")

