Cómo parsear JSON en Python: Guía completa

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es JSON y por qué parsearlo?

JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos que se ha convertido en el estándar para la comunicación entre aplicaciones. A pesar de su nombre, JSON no depende de JavaScript y se utiliza activamente en todos los lenguajes de programación modernos.

Principales ventajas de JSON:

  • Formato legible para humanos
  • Estructura de datos simple
  • Soporte universal
  • Compacto en comparación con XML

Ejemplo de un objeto JSON:

{
  "name": "Alice",
  "age": 30,
  "is_active": true,
  "hobbies": ["reading", "cycling", "traveling"]
}

El módulo json integrado en Python

Python ofrece un potente módulo integrado llamado json para trabajar con datos JSON. Este módulo permite realizar dos operaciones principales:

  1. Deserialización — convertir una cadena JSON en objetos de Python
  2. Serialización — convertir objetos de Python en una cadena JSON

Para empezar, importamos el módulo:

import json

Parsear una cadena JSON a objetos de Python

Usando json.loads()

La función json.loads() (load string) convierte una cadena JSON en el objeto de Python correspondiente:

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'>

Después del parseo, puedes trabajar con los datos como si fueran un diccionario normal:

print(parsed_data['name'])  # Bob
print(parsed_data['age'])   # 25

Correspondencia de tipos de datos

Los tipos JSON se convierten automáticamente a tipos de Python:

JSON Python
object dict
array list
string str
number int/float
true/false True/False
null None

Convertir objetos de Python a JSON

Usando json.dumps()

La función json.dumps() convierte objetos de Python en una cadena 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 formato

Para mejorar la legibilidad, usa parámetros adicionales:

data = {'name': 'Alice', 'age': 30, 'city': 'Madrid'}
json_pretty = json.dumps(data, indent=4, sort_keys=True, ensure_ascii=False)
print(json_pretty)

Parámetros principales:

  • indent — sangrías para el formato
  • sort_keys — ordenar las claves
  • ensure_ascii — soporte para caracteres Unicode

Trabajar con archivos JSON

Leer JSON desde un archivo

Usa json.load() para leer datos JSON desde un archivo:

with open('data.json', 'r', encoding='utf-8') as file:
    content = json.load(file)
    print(content)

Escribir JSON en un archivo

La función json.dump() escribe datos en un archivo:

data = {'city': 'Madrid', 'temperature': 25, 'weather': 'soleado'}

with open('weather.json', 'w', encoding='utf-8') as file:
    json.dump(data, file, indent=4, ensure_ascii=False)

Recomendaciones para trabajar con archivos

  • Siempre especifica la codificación utf-8 para evitar problemas con caracteres especiales
  • Usa el administrador de contexto with para asegurar que el archivo se cierre correctamente
  • Para archivos grandes, considera usar ijson para un parseo eficiente en streaming

Blogs

Book Recommendations