JSON significa Notação de Objectos JavaScript. Não só é leve, como também é fácil de ler e escrever para os seres humanos. Da mesma forma, as máquinas acham-no fácil de analisar e gerar. A análise JSON é extremamente importante ao trabalhar com dados de APIs, arquivos de configuração ou outras fontes de informações armazenadas para qualquer desenvolvedor Python. Este artigo leva-o através de procedimentos básicos para analisar JSON usando o módulo JSON do Python.
O JSON representa dados como pares chave-valor, semelhante a um dicionário Python. Aqui está um exemplo básico de um objeto JSON:
{
"name": "Alice",
"age": 30,
"is_student": false,
"courses": ["Math", "Science"]
}
Este objeto JSON inclui uma cadeia de caracteres, um número, um booleano e uma matriz. Entender essa estrutura é fundamental para analisar e manipular dados JSON em Python.
O módulo json do Python torna simples a análise de strings e arquivos JSON. Este módulo inclui métodos como json.loads() para ler JSON de uma string, e json.load() para ler JSON de um arquivo. Por outro lado, json.dumps() e json.dump() são usados para escrever JSON em uma string e em um arquivo, respetivamente.
Existem várias maneiras de ler dados JSON, que veremos a seguir.
Para ler dados JSON de uma string, use o método json.loads():
import json
json_string = '{"name": "Alice", "age": 30, "is_student": false, "courses": ["Math", "Science"]}'
data = json.loads(json_string)
print(data)
Saída:
Para ler dados JSON de um arquivo, use o método json.load():
import json
with open('data.json', 'r') as file:
data = json.load(file)
print(data)
Saída:
Aqui estão algumas maneiras diferentes de escrever dados JSON:
Para escrever dados JSON em uma string, use o método json.dumps():
import json
data = {
"name": "Alice",
"age": 30,
"is_student": False,
"courses": ["Math", "Science"]
}
json_string = json.dumps(data)
print(json_string)
Saída:
Para escrever dados JSON em um arquivo, use o método json.dump():
import json
data = {
"name": "Alice",
"age": 30,
"is_student": False,
"courses": ["Math", "Science"]
}
with open('data.json', 'w') as file:
json.dump(data, file)
Os objectos JSON aninhados são comuns quando se trabalha com estruturas de dados mais complexas. Python pode facilmente lidar com essas estruturas aninhadas.
import json
nested_json_string = '''
{
"name": "Alice",
"age": 30,
"is_student": false,
"courses": ["Math", "Science"],
"address": {
"street": "123 Main St",
"city": "Wonderland"
}
}
'''
data = json.loads(nested_json_string)
print(data['address']['city'])
Saída:
Por vezes, é necessário converter objectos Python personalizados em JSON. Isso requer um codificador personalizado.
import json
class Student:
def __init__(self, name, age, is_student):
self.name = name
self.age = age
self.is_student = is_student
class StudentEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, Student):
return obj.__dict__
return super().default(obj)
student = Student("Alice", 30, False)
json_string = json.dumps(student, cls=StudentEncoder)
print(json_string)
Saída:
Da mesma forma, para decodificar dados JSON em objetos Python personalizados, você precisa de um decodificador personalizado.
import json
class Student:
def __init__(self, name, age, is_student):
self.name = name
self.age = age
self.is_student = is_student
def student_decoder(dct):
return Student(dct['name'], dct['age'], dct['is_student'])
json_string = '{"name": "Alice", "age": 30, "is_student": false}'
student = json.loads(json_string, object_hook=student_decoder)
print(student.name)
Saída:
Trabalhar com dados JSON pode levar a vários erros comuns, particularmente ao analisar, gerar ou aceder a dados JSON. Aqui estão alguns dos mais comuns:
Um erro comum ao analisar JSON é encontrar um formato JSON inválido. O JSON requer aspas duplas em torno de chaves e valores de cadeia de caracteres, e o aninhamento adequado de colchetes e chaves.
import json
invalid_json_string = "{'name': 'Alice', 'age': 30, 'is_student': False}"
try:
data = json.loads(invalid_json_string)
except json.JSONDecodeError as e:
print(f"Invalid JSON format: {e}")
Saída:
Ao analisar dados JSON, você pode encontrar chaves ausentes. Use o método get para fornecer um valor padrão se uma chave estiver faltando.
import json
json_string = '{"name": "Alice", "age": 30}'
data = json.loads(json_string)
is_student = data.get('is_student', False)
print(is_student)import json
json_string = '{"name": "Alice", "age": 30}'
data = json.loads(json_string)
is_student = data.get('is_student', False)
print(is_student)
Use o módulo pdb para definir pontos de interrupção e depurar seu código de análise JSON.
import json
import pdb
json_string = '{"name": "Alice", "age": 30, "is_student": false}'
pdb.set_trace()
data = json.loads(json_string)
print(data)
A raspagem da Web geralmente envolve a extração de dados de APIs da Web que retornam respostas JSON. Aqui está um exemplo compacto usando a biblioteca de solicitações e o ponto de extremidade https://httpbin.org/anything.
Primeiro, verifique se você tem a biblioteca de solicitações instalada:
pip install requests
Este código importa requests para solicitações HTTP e json para manipular dados JSON. Ele envia uma solicitação GET para o URL de destino usando requests.get(url) e analisa a resposta JSON com response.json(), transformando-a em um dicionário Python. Retiramos e imprimimos dados específicos como cabeçalhos, agente do usuário, origem e URL.
O código contém um forte tratamento de erros; ele captura json.JSONDecodeError quando ocorre um erro de decodificação JSON e KeyError quando uma chave específica está ausente, consequentemente fazendo com que o programa seja protegido contra falhas "sem dados". Essa robustez do código, portanto, permite que ele lide perfeitamente com tarefas reais de raspagem da Web.
import requests
import json
url = 'https://httpbin.org/anything'
response = requests.get(url)
try:
data = response.json()
# Extração de dados específicos da resposta JSON
headers = data['headers']
user_agent = headers.get('User-Agent', 'N/A')
origin = data.get('origin', 'N/A')
url = data.get('url', 'N/A')
print(f"User Agent: {user_agent}")
print(f"Origin: {origin}")
print(f"URL: {url}")
except json.JSONDecodeError:
print("Error decoding JSON response")
except KeyError as e:
print(f"Key error: {e} not found in the JSON response")
Todo programador Python deve saber como analisar JSON. Com o módulo JSON e a melhor maneira de o fazer destacada por este manual, será capaz de ler, escrever e depurar dados JSON com rapidez suficiente. Isso implica que você testará regularmente seus códigos e usará as ferramentas corretas e os recursos mais atuais disponíveis no Python para obter melhores habilidades de manipulação de JSON.
Ao realizar a raspagem da Web, é importante analisar o JSON, considerando o fato de que os dados obtidos das APIs da Web geralmente aparecem na forma de JSON Além disso, você pode extrair informações de várias fontes da Web com eficiência, se puder analisar e manipular os dados JSON de maneira adequada.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Comentários: 0