Curso de Desarrollo Avanzado en Python
Capítulo
>
Nivel

Módulos de Serialización
Módulo JSON

Objetivo

Ir a la estación de servicio y asegurarse de que los datos estén correctamente almacenados usando el módulo JSON para formatear archivos.

Hay una estación de servicio al sur del edificio anexo en la nueva área de construcción; toda esta zona se va a remodelar para plantar cultivos. La estación cuenta con varios terminales que procesan datos para el nuevo desarrollo; podríamos escribir los datos manualmente, pero llevaría mucho tiempo. Para el proceso de manejo de datos podemos usar JSON, que significa JavaScript Object Notation. Es un formato de datos independiente de los lenguajes de programación y almacena la información de forma fácilmente legible para el almacenamiento y la transmisión de datos.

Para usar JSON con Python podemos usar import json, lo que nos dará acceso a las funciones de JSON; para nuestros propósitos utilizaremos las siguientes funciones:

  • json.loads(): Convierte una cadena JSON en datos de Python. Toma un argumento: la cadena que deseas analizar en Python.
  • json.dumps(): Convierte datos de Python en una cadena JSON. Esta función puede recibir hasta cuatro (4) argumentos; solo el primero es obligatorio. Son los siguientes:
    1. Datos de Python que deseas convertir a JSON: pueden ser de los siguientes tipos de datos: diccionarios, listas, tuplas, cadenas, enteros, flotantes, booleanos y None.
    2. indent: número de espacios que deseas añadir al comienzo de cada punto de datos.
    3. separators: partes que deseas que aparezcan entre y/o al final de los puntos de datos.
    4. sort_keys: ordena las claves de un diccionario alfabéticamente si conviertes un diccionario.

Para comenzar, dirígete a la marca X dorada en el puesto avanzado a la izquierda y colócate frente al escritorio con el memo. Usa la función read() para verificar la información necesaria para confirmar el estado del terminal y tómala en nota. Camina hasta la marca X clara frente al terminal; hay una constante llamada transmission, usa json.dumps() para formatearla como JSON para poder convertirla, así: transmission = json.dumps(transmission).

Crea un diccionario llamado load y almacena el valor de json.loads() con la constante transmission como argumento. Esto convertirá el JSON en Python para que su información sea fácilmente accesible. Usa la función speak() con las claves indicadas en el memo y usando el diccionario load que creaste. Por ejemplo: player.speak(load["system"]), haz esto para todas las claves.

Después de verificar la información en el terminal, camina hacia la estación, entra y dirígete a la marca X clara sobre la alfombra verde. Revisa el memo usando la función read(), verifica y toma nota de los valores; en el editor hay un diccionario preescrito llamado profile, completa los valores faltantes con la información del memo.

Camina hasta la marca X oscura sobre la alfombra verde, colócate frente al terminal y crea una variable llamada transfer y almacena el valor de json.dumps() añadiendo el diccionario profile como único argumento. Al hacer esto convertimos el diccionario en un objeto de cadena JSON. Usa la función preescrita display() y añade el JSON transfer para almacenar los datos en el terminal.

Camina hasta la marca X oscura sobre la alfombra roja y usa la función read() para verificar los datos ya ingresados en el terminal. Los datos no están presentados en un formato adecuado; para almacenarlos correctamente deben guardarse y formatearse en JSON. Los datos están en una constante de diccionario llamada red_data. Crea una variable llamada red_storage y almacena el valor de la función json.dumps().

Para formatear los datos, agrega los siguientes argumentos a la función: añade red_data para convertir la constante a JSON, añade indent y establécelo en 5 para formatear el texto, añade separators y pon ("- ", " = ") para agregar estos símbolos al final de cada línea. La línea debe verse así: red_storage = json.dumps(red_data, indent=5, separators=("- ", " = ")). Usa la función preescrita display() y añade la cadena JSON red_storage para almacenar y mostrar los datos formateados.

Camina hasta la marca X oscura sobre la alfombra azul, colócate frente al terminal y usa la función read(). Al igual que antes, los datos no están almacenados correctamente y necesitan formatearse, pero también ordenarse. Los datos están en una constante llamada blue_data. Crea una variable llamada blue_storage y almacena el valor de la función json.dumps().

Para los argumentos: añade blue_data para convertir la constante a JSON, añade indent y establécelo en 4 para formatear el texto, añade separators y pon (".0", " = ") para agregar estos símbolos al final de cada línea. Además, añade el argumento sort_keys como argumento final y establécelo en True, así: sort_keys=True. Usa la función preescrita display() y añade la cadena JSON blue_storage para almacenar y mostrar los datos ordenados y completar el nivel.

Libro de Código