Serializar un objeto de clase de Python a JSON
Este tutorial educa sobre el proceso de serialización. También ilustra cómo podemos hacer que una clase JSON sea serializable usando el método toJSON()
y envolviendo JSON para volcar en su clase.
Serialización en Python
El proceso de serialización implica transformar un objeto en un formato que pueda conservarse y recuperarse más tarde. Por ejemplo, registrando el estado de un objeto en un archivo.
Todos los desarrolladores deben realizar la serialización en algún momento para todos los proyectos que sean remotamente sofisticados. La simplicidad del lenguaje de programación Python en muchos trabajos típicos de programación es una de sus excelentes características.
Con unas pocas líneas de código, el archivo IO, dibujar gráficos y acceder al contenido en línea se simplifican. Del mismo modo, Python simplifica la serialización, excepto cuando intenta serializar una clase personalizada.
Aprendamos cómo serializar sus objetos de clase a objetos JSON a continuación.
Hacer una clase de Python JSON serializable
El módulo json
incorporado de Python solo puede manejar tipos primitivos de Python con una contraparte directa de JSON.
Expresamente, la funcionalidad predeterminada del codificador JSON, json.dump()
y json.dumps()
se limita a serializar el conjunto más básico de tipos de objetos (por ejemplo, diccionario, listas, cadenas, números, Ninguno, etc. .).
Para solucionar esto, debemos crear un codificador único que permita que nuestra clase JSON sea serializable.
Es posible hacer que una clase de Python JSON sea serializable en varios métodos. Elija la opción que mejor se adapte a la complejidad de su situación.
Hay dos métodos principales para hacer que una clase JSON sea serializable que se detallan a continuación:
- El método
toJSON()
- Envuelva JSON para volcar en su clase
Utilice el método toJSON()
para hacer serializable una clase JSON
Podemos implementar el método serializador en lugar de la clase serializable JSON. Por ejemplo, en este método, la clase Objeto
puede tener una función JSON que devuelve un diccionario de la información del Objeto
.
Dado que todos los atributos de Objeto
son tipos nativos, podemos enviar este diccionario a una función de codificación para obtener la notación JSON. Finalmente, devolvemos los valores de los atributos que componen un objeto.
import json
class Object:
def toJSON(self):
return json.dumps(self, default=lambda o: o.__dict__, sort_keys=True, indent=4)
me = Object()
me.name = "kelvin"
me.age = 20
me.dog = Object()
me.dog.name = "Brunno"
print(me.toJSON())
Producción :
{
"age": 20,
"dog": {
"name": "Brunno"
},
"name": "kelvin"
}
Envuelva JSON para volcar en su clase
Otra solución es crear una subclase de una clase JsonSerializable
para crear una clase FileItem
que envuelva el volcado de JSON, como se muestra en el siguiente código.
Código de ejemplo:
from typing import List
from dataclasses import dataclass, asdict, field
from json import dumps
@dataclass
class Students:
id: 1
name: "stu1"
@property
def __dict__(self):
return asdict(self)
@property
def json(self):
return dumps(self.__dict__)
test_object_1 = Students(id=1, name="Kelvin")
print(test_object_1.json)
Producción :
{"id": 1, "name": "Kelvin"}
Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedInArtículo relacionado - Python JSON
- Obtener JSON de la URL en Python
- Cómo imprimir un archivo JSON en Python
- Agregar datos a un archivo JSON usando Python
- Aplanar JSON en Python
- Python compara objetos JSON multinivel usando JSON Diff