Serialisiert ein Python-Klassenobjekt in JSON
Dieses Tutorial informiert über den Serialisierungsprozess. Es zeigt auch, wie wir eine JSON-Klasse serialisierbar machen können, indem wir die Methode toJSON()
verwenden und JSON so einpacken, dass es in seiner Klasse ausgegeben wird.
Serialisierung in Python
Beim Serialisierungsprozess wird ein Objekt in ein Format umgewandelt, das aufbewahrt und später abgerufen werden kann. Beispielsweise durch Aufzeichnung des Zustands eines Objekts in einer Datei.
Alle Entwickler müssen irgendwann für alle Projekte, die auch nur annähernd anspruchsvoll sind, eine Serialisierung durchführen. Die Einfachheit der Programmiersprache Python in vielen typischen Programmieraufgaben ist eine ihrer herausragenden Eigenschaften.
Mit ein paar Codezeilen werden Datei-IO, das Zeichnen von Diagrammen und der Zugriff auf Online-Inhalte ganz einfach. Ebenso vereinfacht Python die Serialisierung, außer wenn versucht wird, eine benutzerdefinierte Klasse zu serialisieren.
Im Folgenden erfahren Sie, wie Sie Ihre Klassenobjekte in JSON-Objekte serialisieren.
Machen Sie eine Python-Klasse JSON serialisierbar
Das eingebaute json
-Modul von Python kann nur primitive Python-Typen mit einem direkten JSON-Gegenstück verarbeiten.
Ausdrücklich ist die Standardfunktionalität des JSON-Encoders json.dump()
und json.dumps()
auf die Serialisierung der grundlegendsten Menge von Objekttypen (z. B. Wörterbuch, Listen, Zeichenfolgen, Zahlen, Keine usw.) beschränkt .).
Um dies zu beheben, müssen wir einen eindeutigen Encoder erstellen, der es unserer JSON-Klasse ermöglicht, serialisierbar zu sein.
Es ist möglich, eine Python-Klasse JSON in verschiedenen Methoden serialisierbar zu machen. Wählen Sie die Option, die der Komplexität Ihrer Situation am besten entspricht.
Es gibt zwei Hauptmethoden, um eine JSON-Klasse serialisierbar zu machen, die unten angegeben sind:
- Die
toJSON()
-Methode - Wrappen Sie JSON, um es in seiner Klasse abzulegen
Verwenden Sie die Methode toJSON()
, um eine JSON-Klasse serialisierbar zu machen
Wir können die Serializer-Methode anstelle der serialisierbaren JSON-Klasse implementieren. Beispielsweise könnte in dieser Methode die Klasse Object
eine JSON-Funktion haben, die ein Wörterbuch der Object
-Informationen zurückgibt.
Da alle Object
-Attribute native Typen sind, können wir dieses Wörterbuch an eine Codierungsfunktion senden, um die JSON-Notation zu erhalten. Schließlich geben wir die Werte der Attribute zurück, aus denen ein Objekt besteht.
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())
Ausgang:
{
"age": 20,
"dog": {
"name": "Brunno"
},
"name": "kelvin"
}
Wrap JSON to Dump in seiner Klasse
Eine andere Lösung besteht darin, eine JsonSerializable
-Klasse zu unterklassen, um eine FileItem
-Klasse zu erstellen, die das JSON-Dumping umschließt, wie im folgenden Code gezeigt.
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"}
Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedInVerwandter Artikel - Python JSON
- JSON von URL in Python abrufen
- Wie man eine JSON-Datei in Python hübsch ausdruckt
- Daten mit Python an eine JSON-Datei anhängen
- Python Vergleichen Sie mehrstufige JSON-Objekte mit JSON Diff
- Reduzieren Sie JSON in Python