Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich meine Python-Klassen JSON-serialisierbar machen?

Wie kann ich meine Python-Klassen JSON-serialisierbar machen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-21 14:38:15115Durchsuche

How Can I Make My Python Classes JSON Serializable?

Python-Klassen JSON serialisierbar machen

Serialisierung ermöglicht die Konvertierung von Objekten in ein für Persistenz oder Übertragung geeignetes Format. Die Serialisierung benutzerdefinierter Klassen in JSON führt häufig zu einem TypeError, da sie nicht JSON-serialisierbar sind.

Implementieren einer toJSON()-Methode

Ein Ansatz besteht darin, eine zu erstellen toJSON()-Methode für die Klasse, die ihre Serialisierung manuell verwaltet. Dies erfordert die Implementierung einer benutzerdefinierten JSON-Serialisierungsfunktion und die Sicherstellung der ordnungsgemäßen Handhabung verschachtelter Objekte.

import json

class FileItem:
    def __init__(self, fname):
        self.fname = fname

    def toJSON(self):
        return json.dumps(self.__dict__)

x = FileItem('/foo/bar')
print(x.toJSON())  # Outputs: '{"fname": "/foo/bar"}'

Verwendung der orjson-Bibliothek

Für eine umfassende Lösung sollten Sie die Verwendung von orjson in Betracht ziehen Bibliothek, die eine effiziente und anpassbare Möglichkeit bietet, benutzerdefinierte Klassen in JSON zu serialisieren. Es bietet erweiterte Funktionen wie Schema-Erzwingung und Unterstützung für komplexe Objektstrukturen.

import orjson

@orjson.dataclass
class FileItem:
    fname: str

x = FileItem('/foo/bar')
json_bytes = orjson.dumps(x)  # Returns a byte string
print(json_bytes.decode())  # Outputs: '{"fname": "/foo/bar"}'

Fazit

Die Verwendung einer benutzerdefinierten toJSON()-Methode oder der orjson-Bibliothek bietet praktische Lösungen zum Serialisieren von Python-Klassen in JSON. Beide Ansätze stellen sicher, dass Objekte effektiv in einem JSON-Format dargestellt und übertragen werden können.

Das obige ist der detaillierte Inhalt vonWie kann ich meine Python-Klassen JSON-serialisierbar machen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn