101 - Serialización y deserialización en Python (módulo json)

En el concepto anterior trabajamos con la deserialización de recursos JSON localizados en un servidor y su posterior transformación a listas con elementos de tipo diccionario.

Definiciones básicas.

  • Serialización: Consiste en convertir un objeto de Python (normalmente una lista o diccionario) en un string.
  • Deserialización: Consiste en convertir un string en un objeto de Python (normalmente una lista o diccionario).

Como vemos son los dos caminos posibles para transformar una estructura de datos en otra estructura.

Problema 1

Definir un string en Python con la estructura interna de un archivo JSON.
Deserializar el string y convertirlo a una lista de Python. Luego volver a serializar la lista a un string.

Programa: ejercicio345.py

Ver video

import json

cadena1="""
  [
      {
          "codigo":"1",
          "descripcion":"papas",
          "precio":"12"
      },
      {
          "codigo":"2",
          "descripcion":"naranjas",
          "precio":"25"
      }
  ]
"""
print(type(cadena1))
print(cadena1)
print("_"*80)
lista=json.loads(cadena1)
print(type(lista))
print(lista)
print("_"*80)
cadena2=json.dumps(lista)
print(type(cadena2))
print(cadena2)

El resultado de ejecutar el siguente script en Python es:

json serialización y deserialización Python

Definimos e inicializamos una variable string:

cadena1="""
  [
      {
          "codigo":"1",
          "descripcion":"papas",
          "precio":"12"
      },
      {
          "codigo":"2",
          "descripcion":"naranjas",
          "precio":"25"
      }
  ]
"""

Mediante la función 'type' podemos confirmar que la variable 'cadena1' es de tipo 'str':

print(type(cadena1))

Ahora mediante la función 'loads' del módulo 'json' que vimos en el concepto anterior deserializamos el string:

lista=json.loads(cadena1)

Si imprimimos el tipo de la variable 'lista' podemos verificar que se trata de tipo 'list':

print(type(lista))

Podemos ahora procesar la lista 'lista1', en nuestro caso solo la imprimimos en forma completa:

print(lista)

Para convertir una lista a tipo string debemos utilizar la función 'dumps' del módulo 'json':

cadena2=json.dumps(lista)

Podemos comprobar que la variable 'cadena2' es de tipo string mediante la función 'type':

print(type(cadena2))
print(cadena2)

Transformación de datos entre Python y JSON

Los tipos de datos en JSON son muy similares a los tipos de datos en Python, pero no son exactamente iguales.
La conversión en los procesos de serializar y deserializar son:

Python JSON
dic object
list o tupla array
str string
int y float number
True true
False false
None null