Convertir clase de datos a JSON en Python

Zeeshan Afridi 21 junio 2023
Convertir clase de datos a JSON en Python

En este tutorial, aprenderemos cómo se admite JSON en Python para crear clase de datos para cada nodo raíz de JSON. También aprenderemos la implementación de dataclass como diccionario en Python.

clase de datos a JSON en Python

La notación de objetos de JavaScript o JSON indica que los datos se almacenan y transfieren mediante un archivo de secuencia de comandos (ejecutable) compuesto de texto en un lenguaje de programación.

Python admite JSON a través del módulo integrado JSON. Por lo tanto, importamos el paquete JSON en el script de Python para aprovechar esta capacidad.

La cadena entrecomillada utilizada en JSON contiene el valor en la asignación de clave-valor. Es comparable al diccionario de Python.

Python admite funciones JSON de forma nativa, y JSON muestra una API similar a los usuarios de los módulos marshal y pickle de la biblioteca estándar.

Por otro lado, la clase de datos crea objetos de transferencia de datos que se utilizan para almacenar datos en ellos; estos objetos necesitan métodos de definición adecuados para una comparación equitativa, a veces para su visualización.

dataclass se usa para crear métodos y sintaxis corta para clases de transferencia de datos.

Implementar clase de datos como un diccionario en Python

Python 3.7 y posteriores son las únicas versiones que admiten el decorador clase de datos. Produce un objeto, comúnmente denominado objeto de transferencia de datos, cuya única función es almacenar datos.

El problema es que proporcionar a estos objetos la funcionalidad correcta requiere la creación de métodos para la comparación de igualdad, visualización, etc.

Estos métodos deben ser laboriosos para desarrollar y propensos a errores. Una clase de datos produce todos estos métodos para usted, dando a las clases de transferencia de datos una sintaxis breve.

Utiliza una versión ligeramente alterada (y algo más efectiva) de dataclasses.asdict para la serialización.

Está iterando sobre los campos de “clase de datos” y creando un analizador para cada tipo anotado al deserializar JSON a una instancia de “clase de datos” por primera vez, lo que hace que el proceso sea más efectivo cuando se repite.

Cree una clase de datos para cada nodo raíz JSON en Python

Dado que el campo "users" es una matriz de objetos con "id" y "name", podemos ver que necesitamos construir dos clases: "Test" y "User".

Código de ejemplo:

from dataclasses import dataclass
from typing import List


@dataclass
class User:
    id: 1
    name: "Kelvin"


@dataclass
class Test:
    id: 2
    userid: " Jack"


users: List[User]

Cada atributo JSON debe asignarse a una propiedad de Python con seguridad de tipos.

El siguiente código asigna cada nodo y atributo JSON a las clases y propiedades de Python. Para hacer eso, creamos un método estático en las clases de Python responsable de mapear nuestro diccionario a sus propiedades de Python.

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

Recuerde que los objetos de transferencia de datos están hechos por clases de datos y se utilizan para almacenar datos en ellos. Por lo tanto, estos objetos requieren la definición de los métodos correctos para la comparación equitativa y, en ocasiones, para las visualizaciones.

El método y la sintaxis para las clases de transferencia de datos se crean usando clase de datos.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

Artículo relacionado - Python Dataclass