Introducción
JSON (JavaScript Object Notation) es un formato de texto ligero para el intercambio de datos. Es fácil de leer y escribir para los humanos y fácil de analizar y generar para las máquinas. JSON se utiliza comúnmente para transmitir datos en aplicaciones web (por ejemplo, enviar datos desde el servidor al cliente para que se muestren en una página web).
Conceptos Clave
- JSON: Un formato de intercambio de datos basado en texto que es completamente independiente del lenguaje.
- Serialización: El proceso de convertir un objeto en una cadena JSON.
- Deserialización: El proceso de convertir una cadena JSON en un objeto.
Sintaxis de JSON
JSON se compone de pares clave/valor. Las claves son cadenas y los valores pueden ser cadenas, números, objetos, arreglos, true
, false
o null
.
{ "nombre": "Juan", "edad": 30, "casado": true, "hijos": ["Ana", "Luis"], "direccion": { "calle": "Calle Falsa 123", "ciudad": "Springfield" } }
Trabajando con JSON en Python
Python proporciona el módulo json
para trabajar con datos JSON. Este módulo incluye métodos para serializar y deserializar datos JSON.
Serialización (Convertir un Objeto en JSON)
Para convertir un objeto de Python en una cadena JSON, utilizamos el método json.dumps()
.
import json # Un diccionario de Python persona = { "nombre": "Juan", "edad": 30, "casado": True, "hijos": ["Ana", "Luis"], "direccion": { "calle": "Calle Falsa 123", "ciudad": "Springfield" } } # Convertir el diccionario a una cadena JSON persona_json = json.dumps(persona, indent=4) print(persona_json)
Deserialización (Convertir JSON en un Objeto)
Para convertir una cadena JSON en un objeto de Python, utilizamos el método json.loads()
.
import json # Una cadena JSON persona_json = ''' { "nombre": "Juan", "edad": 30, "casado": true, "hijos": ["Ana", "Luis"], "direccion": { "calle": "Calle Falsa 123", "ciudad": "Springfield" } } ''' # Convertir la cadena JSON a un diccionario de Python persona = json.loads(persona_json) print(persona)
Lectura y Escritura de Archivos JSON
Escribir JSON a un Archivo
Para escribir datos JSON en un archivo, utilizamos el método json.dump()
.
import json # Un diccionario de Python persona = { "nombre": "Juan", "edad": 30, "casado": True, "hijos": ["Ana", "Luis"], "direccion": { "calle": "Calle Falsa 123", "ciudad": "Springfield" } } # Escribir el diccionario en un archivo JSON with open('persona.json', 'w') as archivo: json.dump(persona, archivo, indent=4)
Leer JSON desde un Archivo
Para leer datos JSON desde un archivo, utilizamos el método json.load()
.
import json # Leer el archivo JSON y convertirlo en un diccionario de Python with open('persona.json', 'r') as archivo: persona = json.load(archivo) print(persona)
Ejercicios Prácticos
Ejercicio 1: Serialización y Deserialización
- Crea un diccionario de Python que represente a una persona con los siguientes campos: nombre, edad, casado, hijos (una lista de nombres) y dirección (un diccionario con calle y ciudad).
- Convierte el diccionario a una cadena JSON y muéstralo en la consola.
- Convierte la cadena JSON de nuevo a un diccionario de Python y muéstralo en la consola.
Solución
import json # Paso 1: Crear el diccionario persona = { "nombre": "Juan", "edad": 30, "casado": True, "hijos": ["Ana", "Luis"], "direccion": { "calle": "Calle Falsa 123", "ciudad": "Springfield" } } # Paso 2: Convertir el diccionario a una cadena JSON persona_json = json.dumps(persona, indent=4) print("Cadena JSON:") print(persona_json) # Paso 3: Convertir la cadena JSON de nuevo a un diccionario persona_dict = json.loads(persona_json) print("\nDiccionario de Python:") print(persona_dict)
Ejercicio 2: Lectura y Escritura de Archivos JSON
- Escribe el diccionario creado en el Ejercicio 1 a un archivo JSON llamado
persona.json
. - Lee el archivo
persona.json
y convierte su contenido en un diccionario de Python. - Muestra el diccionario en la consola.
Solución
import json # Paso 1: Escribir el diccionario a un archivo JSON with open('persona.json', 'w') as archivo: json.dump(persona, archivo, indent=4) # Paso 2: Leer el archivo JSON y convertirlo en un diccionario de Python with open('persona.json', 'r') as archivo: persona_leida = json.load(archivo) # Paso 3: Mostrar el diccionario en la consola print("Diccionario leído del archivo JSON:") print(persona_leida)
Conclusión
En esta sección, hemos aprendido cómo manejar datos JSON en Python utilizando el módulo json
. Hemos cubierto la serialización y deserialización de datos, así como la lectura y escritura de archivos JSON. Estos conocimientos son fundamentales para trabajar con APIs y otros servicios web que utilizan JSON como formato de intercambio de datos. En la próxima sección, exploraremos operaciones de archivos y directorios en Python.
Curso de Programación en Python
Módulo 1: Introducción a Python
- Introducción a Python
- Configuración del Entorno de Desarrollo
- Sintaxis de Python y Tipos de Datos Básicos
- Variables y Constantes
- Entrada y Salida Básica
Módulo 2: Estructuras de Control
- Sentencias Condicionales
- Bucles: for y while
- Herramientas de Control de Flujo
- Comprensiones de Listas
Módulo 3: Funciones y Módulos
- Definición de Funciones
- Argumentos de Función
- Funciones Lambda
- Módulos y Paquetes
- Visión General de la Biblioteca Estándar
Módulo 4: Estructuras de Datos
Módulo 5: Programación Orientada a Objetos
Módulo 6: Manejo de Archivos
- Lectura y Escritura de Archivos
- Trabajo con Archivos CSV
- Manejo de Datos JSON
- Operaciones de Archivos y Directorios
Módulo 7: Manejo de Errores y Excepciones
- Introducción a las Excepciones
- Manejo de Excepciones
- Lanzamiento de Excepciones
- Excepciones Personalizadas
Módulo 8: Temas Avanzados
- Decoradores
- Generadores
- Administradores de Contexto
- Concurrencia: Hilos y Procesos
- Asyncio para Programación Asíncrona
Módulo 9: Pruebas y Depuración
- Introducción a las Pruebas
- Pruebas Unitarias con unittest
- Desarrollo Guiado por Pruebas
- Técnicas de Depuración
- Uso de pdb para Depuración
Módulo 10: Desarrollo Web con Python
- Introducción al Desarrollo Web
- Fundamentos del Framework Flask
- Construcción de APIs REST con Flask
- Introducción a Django
- Construcción de Aplicaciones Web con Django
Módulo 11: Ciencia de Datos con Python
- Introducción a la Ciencia de Datos
- NumPy para Computación Numérica
- Pandas para Manipulación de Datos
- Matplotlib para Visualización de Datos
- Introducción al Aprendizaje Automático con scikit-learn