Konvertieren Sie Dataclass in Python in JSON

Zeeshan Afridi 21 Juni 2023
Konvertieren Sie Dataclass in Python in JSON

In diesem Tutorial erfahren wir, wie JSON in Python unterstützt wird, um dataclass für jeden JSON-root-Knoten zu erstellen. Wir werden auch die Implementierung von dataclass als Wörterbuch in Python lernen.

dataclass zu JSON in Python

JavaScript Object Notation oder JSON gibt an, dass die Daten mithilfe einer Skriptdatei (ausführbare Datei) gespeichert und übertragen werden, die aus Text in einer Programmiersprache besteht.

Python unterstützt JSON über das integrierte JSON-Modul. Daher importieren wir das JSON-Paket in das Python-Skript, um diese Funktion zu nutzen.

Die in JSON verwendete Zeichenfolge in Anführungszeichen enthält den Wert in der Schlüsselwertzuordnung. Es ist vergleichbar mit dem Wörterbuch von Python.

Python unterstützt JSON-Features nativ, und JSON zeigt eine API an, die Benutzern der Marshal- und Pickle-Module aus der Standardbibliothek ähnelt.

Andererseits erstellt die Datenklasse Datenübertragungsobjekte, die zum Speichern von Daten in ihnen verwendet werden; Diese Objekte benötigen geeignete Definitionsmethoden für einen gleichwertigen Vergleich, manchmal für die Anzeige.

dataclass wird zum Erstellen von Methoden und Kurzsyntax für Datenübertragungsklassen verwendet.

Implementieren Sie dataclass als Dictionary in Python

Python 3.7 und höher sind die einzigen Versionen, die den Decorator dataclass unterstützen. Es erzeugt ein Objekt, das üblicherweise als Datenübertragungsobjekt bezeichnet wird und dessen einzige Funktion darin besteht, Daten zu speichern.

Das Problem ist, dass die Bereitstellung dieser Objekte mit der richtigen Funktionalität die Erstellung von Methoden für den Gleichheitsvergleich, die Anzeige usw. erfordert.

Diese Methoden müssen arbeitsintensiv zu entwickeln und fehleranfällig sein. Eine Datenklasse produziert all diese Methoden für Sie und gibt Datenübertragungsklassen eine kurze Syntax.

Es verwendet eine leicht veränderte (und etwas effektivere) Version von dataclasses.asdict für die Serialisierung.

Sie iterieren über die dataclass-Felder und erstellen einen Parser für jeden annotierten Typ, wenn Sie JSON zum ersten Mal in eine dataclass-Instanz deserialisieren, wodurch der Prozess bei Wiederholung effektiver wird.

Erstellen Sie eine Datenklasse für jeden JSON-root-Knoten in Python

Da das Feld Benutzer ein Array von Objekten mit "id" und "name" ist, sehen wir, dass wir zwei Klassen erstellen müssen: "Test" und Benutzer.

Beispielcode:

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]

Jedes JSON-Attribut sollte einer typsicheren Python-Eigenschaft zugeordnet werden.

Der folgende Code ordnet alle JSON-Knoten und -Attribute den Python-Klassen und -Eigenschaften zu. Dazu erstellen wir eine statische Methode in Python-Klassen, die für die Zuordnung unseres Wörterbuchs zu Ihren Python-Eigenschaften verantwortlich ist.

Beispielcode:

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)

Ausgang:

{"id": 1, "name": "Kelvin"}

Denken Sie daran, dass die Datenübertragungsobjekte von Datenklassen erstellt und zum Speichern von Daten in ihnen verwendet werden. Daher erfordern diese Objekte die Definition der richtigen Methoden für einen gleichwertigen Vergleich und gelegentlich für Anzeigen.

Methode und Syntax für Datenübertragungsklassen werden mit dataclass erstellt.

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

Verwandter Artikel - Python Dataclass