O que é JSON e por que fazer parsing
JSON (JavaScript Object Notation) é um formato leve de troca de dados baseado em texto, que se tornou o padrão para comunicação entre aplicações. Apesar do nome, o JSON não depende do JavaScript e é amplamente utilizado em todas as linguagens de programação modernas.
Principais vantagens do JSON:
- Formato legível por humanos
- Estrutura de dados simples
- Suporte universal
- Mais compacto que XML
Exemplo de um objeto JSON:
{
"name": "Alice",
"age": 30,
"is_active": true,
"hobbies": ["reading", "cycling", "traveling"]
}
Módulo json nativo do Python
O Python oferece um poderoso módulo nativo chamado json para trabalhar com dados JSON. Este módulo permite realizar duas operações principais:
- Desserialização — converter uma string JSON em objetos Python
- Serialização — converter objetos Python em uma string JSON
Para começar, importe o módulo:
import json
Fazendo parsing de uma string JSON para objetos Python
Usando json.loads()
A função json.loads() (load string) converte uma string JSON no objeto Python correspondente:
import json
json_data = '{"name": "Bob", "age": 25, "is_active": false}'
parsed_data = json.loads(json_data)
print(parsed_data) # {'name': 'Bob', 'age': 25, 'is_active': False}
print(type(parsed_data)) # <class 'dict'>
Após o parsing, você pode manipular os dados como um dicionário comum:
print(parsed_data['name']) # Bob
print(parsed_data['age']) # 25
Mapeamento de tipos de dados
Os tipos JSON são convertidos automaticamente para tipos Python:
| JSON | Python |
|---|---|
| object | dict |
| array | list |
| string | str |
| number | int/float |
| true/false | True/False |
| null | None |
Convertendo objetos Python para JSON
Usando json.dumps()
A função json.dumps() converte objetos Python em uma string JSON:
data = {'name': 'Alice', 'age': 30, 'is_active': True}
json_string = json.dumps(data)
print(json_string) # {"name": "Alice", "age": 30, "is_active": true}
Parâmetros de formatação
Para melhorar a legibilidade, use parâmetros adicionais:
data = {'name': 'Alice', 'age': 30, 'city': 'São Paulo'}
json_pretty = json.dumps(data, indent=4, sort_keys=True, ensure_ascii=False)
print(json_pretty)
Principais parâmetros:
indent— recuos para formataçãosort_keys— ordenação das chavesensure_ascii— suporte a caracteres Unicode
Trabalhando com arquivos JSON
Lendo JSON de um arquivo
Use json.load() para ler dados JSON de um arquivo:
with open('data.json', 'r', encoding='utf-8') as file:
content = json.load(file)
print(content)
Escrevendo JSON em um arquivo
A função json.dump() grava dados em um arquivo:
data = {'city': 'São Paulo', 'temperature': 28, 'weather': 'ensolarado'}
with open('weather.json', 'w', encoding='utf-8') as file:
json.dump(data, file, indent=4, ensure_ascii=False)
Recomendações para trabalhar com arquivos
- Sempre especifique a codificação