Serialisiert ein Python-Klassenobjekt in JSON

Zeeshan Afridi 21 Juni 2023
  1. Serialisierung in Python
  2. Machen Sie eine Python-Klasse JSON serialisierbar
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:

  1. Die toJSON()-Methode
  2. 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 Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

Verwandter Artikel - Python JSON

Verwandter Artikel - Python Class