Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich benutzerdefinierte Python-Klassen in JSON serialisieren?

Wie kann ich benutzerdefinierte Python-Klassen in JSON serialisieren?

Barbara Streisand
Freigeben: 2024-12-27 04:20:21
Original
715 Leute haben es durchsucht

How Can I Serialize Custom Python Classes to JSON?

Serialisierung benutzerdefinierter Python-Klassen in JSON

Problem

Python-Klassen können nicht nativ in JSON serialisiert werden. Betrachten Sie die folgende Klasse:

class FileItem:
    def __init__(self, fname):
        self.fname = fname
Nach dem Login kopieren

Diese Klasse kann nicht direkt in JSON serialisiert werden:

>>> import json
>>> x = FileItem('/foo/bar')
>>> json.dumps(x)
TypeError: Object of type 'FileItem' is not JSON serializable
Nach dem Login kopieren

Lösung

Um dieses Problem zu beheben, besteht ein Ansatz darin, a zu implementieren Serialisierungsmethode:

toJSON() Methode

import json

class Object:
    def toJSON(self):
        return json.dumps(
            self,
            default=lambda o: o.__dict__, 
            sort_keys=True,
            indent=4)
Nach dem Login kopieren

Mit dieser Methode können Sie die Klasse serialisieren:

me = Object()
me.name = "Onur"
me.age = 35
me.dog = Object()
me.dog.name = "Apollo"

print(me.toJSON())
Nach dem Login kopieren

Dadurch wird das folgende JSON ausgegeben:

{
    "age": 35,
    "dog": {
        "name": "Apollo"
    },
    "name": "Onur"
}
Nach dem Login kopieren

Zusätzliche Bibliothek

Für eine umfassendere Lösung können Sie orjson verwenden Bibliothek.

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

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage