Análisis de Python JSON: serialización y deserialización

Aprenda a leer, escribir y analizar datos JSON en Python. Domine json.loads, json.dumps y personalice codificadores/decodificadores JSON.

Pruébelo en el editor

Descripción general

JSON (JavaScript Object Notation) es el formato ligero de intercambio de datos que domina las API web, las configuraciones y las cargas de bases de datos modernas. Debido a que las estructuras JSON se parecen a los diccionarios y listas de Python, la traducción entre ellas es increíblemente fluida. Python viene equipado con un módulo `json` incorporado, lo que facilita analizar cadenas JSON en objetos Python y convertir objetos Python nuevamente en cadenas JSON.

El proceso de traducir un objeto Python (como un diccionario) a una cadena JSON sin formato se llama serialización o codificación. Esto lo manejan `json.dumps()` (para cadenas) y `json.dump()` (para escribir directamente en un archivo). Puede controlar parámetros de formato como "sangría" para embellecer el JSON o "sort_keys" para mantener los atributos ordenados alfabéticamente. Por el contrario, analizar una cadena JSON en un diccionario de Python se llama Deserialización y se ejecuta mediante `json.loads()` y `json.load()`.

Mientras que los tipos estándar de Python como cadenas, números, listas y dictados se serializan automáticamente en JSON, los objetos personalizados (como clases u objetos de fecha y hora) no lo hacen. Intentar codificar un objeto personalizado directamente generará un "TypeError". Para superar esto, los desarrolladores deben crear una clase de codificador personalizada que herede de `json.JSONEncoder` y anule el método `.default()` para serializar clases en diccionarios legibles. Dominar la manipulación de JSON es clave para comunicarse con servicios web externos.

Código y salida de ejecución

Convertir un diccionario en una cadena JSON y analizarlo nuevamente usando la biblioteca json incorporada.

import json

# Python Dictionary representing a user profile
user_profile = {
    "name": "Alex",
    "is_premium": True,
    "skills": ["Python", "Docker"],
    "age": 28
}

# Serialize dictionary to JSON string
json_string = json.dumps(user_profile, indent=2)
print("--- JSON String ---")
print(json_string)

# Deserialize JSON string back to dictionary
parsed_dict = json.loads(json_string)
print("\n--- Parsed Python Dictionary ---")
print(f"Name: {parsed_dict['name']}")
print(f"First Skill: {parsed_dict['skills'][0]}")
Salida terminal
--- JSON String ---
{
  "name": "Alex",
  "is_premium": true,
  "skills": [
    "Python",
    "Docker"
  ],
  "age": 28
}

--- Parsed Python Dictionary ---
Name: Alex
First Skill: Python

Implementación paso a paso

  • Envío de cargas útiles y lectura de datos de API REST
  • Almacenamiento de preferencias de configuración dentro de archivos settings.json
  • Pasar cargas útiles estructuradas entre microservicios

Preguntas frecuentes

¿Cuál es la diferencia entre json.dump y json.dumps?

json.dump (sin la 's') escribe datos JSON directamente en una secuencia de archivos. json.dumps (con la 's') serializa datos en una variable de cadena de Python.

¿Cómo se manejan los errores de decodificación JSON?

Envuelva su código de análisis en un bloque try/except que capture 'json.JSONDecodeError' para manejar con elegancia cadenas JSON con formato incorrecto.

Temas relacionados

Recursos recomendados de Python

Amplíe sus conocimientos con tutoriales interactivos relacionados, hojas de trucos y comparaciones de códigos.