JSON son las siglas de JavaScript Object Notation. No sólo es ligero, sino también fácil de leer y escribir para los seres humanos. Del mismo modo, las máquinas lo encuentran fácil de analizar y generar. El análisis sintáctico de JSON es extremadamente importante cuando se trabaja con datos de APIs, archivos de configuración u otras fuentes de información almacenada para cualquier desarrollador Python. Este artículo te lleva a través de procedimientos básicos para analizar JSON utilizando el módulo JSON de Python.
JSON representa datos como pares clave-valor, de forma similar a un diccionario de Python. He aquí un ejemplo básico de un objeto JSON:
{
"name": "Alice",
"age": 30,
"is_student": false,
"courses": ["Math", "Science"]
}
Este objeto JSON incluye una cadena, un número, un booleano y un array. Entender esta estructura es fundamental para analizar y manipular datos JSON en Python.
El módulo json de Python simplifica el análisis sintáctico de cadenas y archivos JSON. Este módulo incluye métodos como json.loads() para leer JSON de una cadena, y json.load() para leer JSON de un archivo. Por el contrario, json.dumps() y json.dump() se utilizan para escribir JSON en una cadena y en un archivo, respectivamente.
Existen varias formas de leer datos JSON, que veremos a continuación.
Para leer datos JSON de una cadena, utiliza el 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)
Salida:
Para leer datos JSON de un archivo, utiliza el método json.load():
import json
with open('data.json', 'r') as file:
data = json.load(file)
print(data)
Salida:
Aquí hay algunas maneras diferentes de escribir datos JSON:
Para escribir datos JSON en una cadena, utilice el 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)
Salida:
Para escribir datos JSON en un archivo, utiliza el 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)
Los objetos JSON anidados son comunes cuando se trabaja con estructuras de datos más complejas. Python puede manejar fácilmente estas estructuras anidadas.
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'])
Salida:
A veces, necesitas convertir objetos Python personalizados en JSON. Esto requiere un 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)
Salida:
Del mismo modo, para decodificar datos JSON en objetos Python personalizados, necesitas un 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)
Salida:
Trabajar con datos JSON puede dar lugar a varios errores comunes, sobre todo al analizar, generar o acceder a datos JSON. He aquí algunos de los más comunes:
Un error común al analizar JSON es encontrarse con un formato JSON no válido. JSON requiere comillas dobles alrededor de las claves y los valores de cadena, y el anidamiento adecuado de corchetes y llaves.
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}")
Salida:
Al analizar datos JSON, es posible que te encuentres con claves que faltan. Utilice el método get para proporcionar un valor predeterminado si falta una clave.
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)
Utiliza el módulo pdb para establecer puntos de interrupción y depurar tu código de análisis JSON.
import json
import pdb
json_string = '{"name": "Alice", "age": 30, "is_student": false}'
pdb.set_trace()
data = json.loads(json_string)
print(data)
El web scraping a menudo implica extraer datos de APIs web que devuelven respuestas JSON. He aquí un ejemplo compacto utilizando la librería requests y el endpoint https://httpbin.org/anything.
En primer lugar, asegúrate de tener instalada la biblioteca requests:
pip install requests
Este código importa requests para peticiones HTTP y json para manejar datos JSON. Envía una petición GET a la URL de destino usando requests.get(url) y analiza la respuesta JSON con response.json(), convirtiéndola en un diccionario Python. Extraemos e imprimimos datos particulares como cabeceras, agente de usuario, origen y URL.
El código contiene un fuerte manejo de errores; captura json.JSONDecodeError cuando ocurre un error de decodificación JSON, y KeyError cuando una clave específica está ausente, consecuentemente haciendo que el programa esté a salvo de caídas 'sin datos'. Esta robustez del código le permite manejar perfectamente tareas reales de web scraping.
import requests
import json
url = 'https://httpbin.org/anything'
response = requests.get(url)
try:
data = response.json()
# Extracción de datos específicos de la respuesta 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 debe saber cómo analizar JSON. Con el módulo JSON y la mejor manera de hacerlo destacada por este manual, serás capaz de leer, escribir y depurar datos JSON lo suficientemente rápido. Eso implica que probarás regularmente tus códigos, y harás uso de las herramientas correctas y las características más actuales disponibles en Python para mejorar tus habilidades en el manejo de JSON.
Al llevar a cabo el raspado web, uno encuentra el análisis JSON a ser importante, teniendo en cuenta el hecho de que los datos obtenidos de las API web por lo general aparece en forma de JSON Además, se puede extraer información de diversas fuentes web de manera eficiente, si se puede analizar y manipular los datos JSON de una buena manera.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Comentarios: 0