


Wie kann ich benutzerdefinierte JSON-Objekte in Python serialisierbar machen, ohne benutzerdefinierte Encoder zu implementieren?
Benutzerdefinierte Objekte JSON-serialisierbar machen, ohne benutzerdefinierte Encoder zu implementieren
Der standardmäßige JSON-Serialisierungsmechanismus in Python umfasst das Erstellen einer benutzerdefinierten Unterklasse von json.JSONEncoder für Behandeln Sie nicht serialisierbare Objekte. Obwohl dieser Ansatz weit verbreitet ist, kann er für Benutzer, die ihre Klassen JSON-serialisierbar machen möchten, ohne den Code des Aufrufers zu ändern, umständlich sein.
Um dieses Problem zu beheben, besteht eine mögliche Lösung darin, Pythons Monkey-Patching-Technik zu nutzen. Dabei wird das Verhalten vorhandener Module durch Änderung ihres Quellcodes zur Laufzeit geändert. In diesem Fall können wir die JSONEncoder.default()-Methode des JSON-Moduls ändern, um nach einer speziellen „to_json“-Methode im serialisierten Objekt zu suchen. Wenn eine solche Methode vorhanden ist, kann sie zum Generieren einer JSON-Darstellung des Objekts verwendet werden.
Um diesen Ansatz zu implementieren, erstellen Sie ein Modul (z. B. make_json_serializable.py) mit dem folgenden Code:
1 2 3 4 5 6 7 |
|
Dieser Code ändert die Methode JSONEncoder.default(), um zu prüfen, ob im zu serialisierenden Objekt eine „to_json“-Methode vorhanden ist. Wenn die Methode gefunden wird, wird sie zum Generieren einer JSON-Darstellung verwendet. Andernfalls wird das Standardverhalten verwendet.
Um dieses Modul zu verwenden, importieren Sie es einfach vor allen JSON-Serialisierungsvorgängen, um den Monkey-Patch anzuwenden:
1 |
|
Jetzt kann jedes Objekt mit einem Die „to_json“-Methode wird mit dieser Methode serialisiert, ohne dass benutzerdefinierte Encoder erforderlich sind.
Dieser Ansatz erfordert jedoch weiterhin, dass Benutzer eine benutzerdefinierte „to_json“-Methode für jede Klasse implementieren, die sie JSON serialisierbar machen möchten. Eine alternative Lösung, die mehr Flexibilität bietet, besteht darin, das Pickle-Modul zum automatischen Serialisieren und Deserialisieren von Objekten zu verwenden.
Durch Monkey-Patching der JSONEncoder.default()-Methode zum Picken nicht standardmäßiger JSON-Datentypen können wir das beseitigen Bedarf an benutzerdefinierten Serialisierungsmethoden. Der Deserialisierungsprozess erfordert jedoch eine benutzerdefinierte object_hook-Funktion, um die ausgewählten Objekte zu verarbeiten.
Dieser Ansatz bietet eine sauberere und allgemeinere Möglichkeit, benutzerdefinierte Objekte JSON-serialisierbar zu machen, ohne dass Codeänderungen seitens des Aufrufers erforderlich sind.
Das obige ist der detaillierte Inhalt vonWie kann ich benutzerdefinierte JSON-Objekte in Python serialisierbar machen, ohne benutzerdefinierte Encoder zu implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden

So herunterladen Sie Dateien in Python

Wie benutze ich eine schöne Suppe, um HTML zu analysieren?

Wie man mit PDF -Dokumenten mit Python arbeitet

Wie kann man mit Redis in Django -Anwendungen zwischenstrichen

Einführung des natürlichen Sprach -Toolkits (NLTK)

Wie führe ich ein tiefes Lernen mit Tensorflow oder Pytorch durch?
