Última actualización: 04 de diciembre de 2023

10.6. json - Codificador y decodificador JSON

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 <https://docs.python.org/es/3.11/library/pickle.html>`_, 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.

10.6.1. Escribir y leer JSON

A continuación, un ejemplo de un programa de Python para leer y escribir un archivo JSON basado en un tipo diccionario:

 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 = "json_reading_writing.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")

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

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

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"}]}

De esta forma se escribí y lee un archivo 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