Última actualización: 15 de diciembre de 2023

3. Serialización en la web

Nota

Propósito: es una libraría para codificar y decodificar JSON (JavaScript Object Notation).

Codifique objetos de Python como cadenas JSON y decodifique cadenas JSON en objetos de Python. El módulo json proporciona una API similar a la de pickle convertir objetos de Python en memoria a una representación serializada conocida como notación de objetos de JavaScript (JSON).

A diferencia de pickle, JSON tiene la ventaja de tener implementaciones en muchos lenguajes (especialmente JavaScript). Se usa más ampliamente para la comunicación entre el servidor web y el cliente en una API REST, pero también es útil para otras necesidades de comunicación entre aplicaciones.

3.1. json

Por hacer

TODO terminar de escribir esta sección.

3.1.1. Serializar

Por hacer

TODO terminar de escribir esta sección.

3.1.2. Deserializar

Por hacer

TODO terminar de escribir esta sección.

3.1.3. Práctica - Caso real

A continuación se presenta una práctica más real de implementar el uso de proyectos con pickle para leer y escribir un archivo JSON basado en un tipo diccionario:

A continuación se presenta y explica el uso de cada archivo para este proyecto:

Archivo clientes.json

El archivo JSON creado que incluye la información de los clientes:

1
{"clientes": [{"nombre": "Leonardo", "apellido": "Caballero", "codigo_postal": "5001", "telefono": "+58-412-4734567"}, {"nombre": "Ana", "apellido": "Poleo", "codigo_postal": "6302", "telefono": "+58-426-5831297"}, {"nombre": "Pedro", "apellido": "Lopez", "codigo_postal": "4001", "telefono": "+58-414-2360943"}]}

Archivo main.py

Modulo de principal del programa.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
""" Programa para leer y escribir un archivo JSON """

import json
import logging
import os

logging.basicConfig(level=logging.INFO)

NOMBRE_ARCHIVO = "clientes.json"
DIR_ARCHIVO = os.path.dirname(os.path.abspath(__file__)) + os.sep
ARCHIVO = DIR_ARCHIVO + NOMBRE_ARCHIVO

# Data a escribir
DATA = {
    "clientes": [
        {
            "nombre": "Leonardo",
            "apellido": "Caballero",
            "codigo_postal": "5001",
            "telefono": "+58-412-4734567",
        },
        {
            "nombre": "Ana",
            "apellido": "Poleo",
            "codigo_postal": "6302",
            "telefono": "+58-426-5831297",
        },
        {
            "nombre": "Pedro",
            "apellido": "Lopez",
            "codigo_postal": "4001",
            "telefono": "+58-414-2360943",
        },
    ]
}

print(DATA, type(DATA), "\n")

# Abriendo archivo JSON para escribir un tipo diccionario
with open(ARCHIVO, "w") as archivo_json:
    json.dump(DATA, archivo_json)
    logging.info("Se escribió un tipo diccionario en archivo JSON\n")

# Abriendo archivo JSON
with open(ARCHIVO) as archivo_json:
    # Leyendo desde archivo JSON
    data = json.load(archivo_json)
    logging.info("Se leyó desde archivo JSON\n")
    for cliente in data["clientes"]:
        print(f"Nombre:", cliente["nombre"])
        print(f"Apellido:", cliente["apellido"])
        print(f"Código postal:", cliente["codigo_postal"])
        print(f"Teléfono:", cliente["telefono"])
        print(f"Datos detallados: {cliente}\n")

Importante

Usted puede descargar el código usado en esta sección haciendo clic en los siguientes enlaces: clientes.json y main.py.

Truco

Para ejecutar el código clientes.json y main.py, abra una consola de comando, acceda al directorio donde se encuentra ambos programas:

leccion3/
├── clientes.json
└── main.py

Si tiene la estructura de archivo previa, entonces ejecute el siguiente comando:

$ python main.py

El anterior código al ejecutar debe mostrar el siguiente mensaje:

{'clientes': [{'nombre': 'Leonardo', 'apellido': 'Caballero', 'codigo_postal': '5001', 'telefono': '+58-412-4734567'}, {'nombre': 'Ana', 'apellido': 'Poleo', 'codigo_postal': '6302', 'telefono': '+58-426-5831297'}, {'nombre': 'Pedro', 'apellido': 'Lopez', 'codigo_postal': '4001', 'telefono': '+58-414-2360943'}]} <class 'dict'>

INFO:root:Se escribió un tipo diccionario en archivo JSON

INFO:root:Se leyó desde archivo JSON

Nombre: Leonardo
Apellido: Caballero
Código postal: 5001
Teléfono: +58-412-4734567
Datos detallados: {'nombre': 'Leonardo', 'apellido': 'Caballero', 'codigo_postal': '5001', 'telefono': '+58-412-4734567'}

Nombre: Ana
Apellido: Poleo
Código postal: 6302
Teléfono: +58-426-5831297
Datos detallados: {'nombre': 'Ana', 'apellido': 'Poleo', 'codigo_postal': '6302', 'telefono': '+58-426-5831297'}

Nombre: Pedro
Apellido: Lopez
Código postal: 4001
Teléfono: +58-414-2360943
Datos detallados: {'nombre': 'Pedro', 'apellido': 'Lopez', 'codigo_postal': '4001', 'telefono': '+58-414-2360943'}

Asi de esta forma puede leer y escribir registros en un archivo JSON usando la librería json.


Ver también

Consulte la sección de lecturas suplementarias del entrenamiento para ampliar su conocimiento en esta temática.


¿Cómo puedo ayudar?

¡Mi soporte está aquí para ayudar!

Mi horario de oficina es de lunes a sábado, de 9 AM a 5 PM. GMT-4 - Caracas, Venezuela.

La hora aquí es actualmente 7:35 PM GMT-4.

Mi objetivo es responder a todos los mensajes dentro de un día hábil.

Contrata mi increíble soporte profesional