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 is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedIn