Ich habe versucht, eine Klasse zu erstellen, mit der Json in Python problemlos serialisiert werden kann

Sie müssen Json in Python verarbeiten, und es ist eine integrierte Funktion Es war etwas schwierig zu handhaben, daher wäre es einfacher, Json mit Python zu handhaben. Ich habe eine Klasse erstellt

Es ist das erste Mal, dass ich Python richtig berührt habe, daher ist die Verwendung etwas seltsam Es kann sich in erster Linie um ein vorhandenes Feature handeln.

Ziel

Beim Umgang mit Json in Python Sie können es nicht ohne Map zwischen Python und Json tun. In diesem Fall müssen Sie es für jede Klasse schreiben, um es zu einer Klasse zu machen. Wenn Sie Json aus einer Klasse ausgeben, müssen Sie für jede Klasse einen Prozess schreiben. Das ist ** sehr nervig **

Daher wird es automatisch aus Jsons Schlüssel- und Variablennamen serialisiert. Erstellen Sie eine Klasse, die Json aus dem Variablennamen erstellt

Quellcode

Diese Klasse sieht so aus.

JsonAdapter.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import json


class JsonAdapter(object):
	#Von json serialisieren
	def Serialize(self, argJsonData) :

		jsonData = argJsonData
		if isinstance(argJsonData, basestring ) :
			jsonData = json.loads(argJsonData)

		for key in self.__dict__.keys():
			if isinstance(getattr(self,key), JsonAdapter ) or getattr(self,key) == None :
				valclass = getattr(self,key)
				if valclass == None :
					valclass = getattr(sys.modules["Classes.DataPDO"],key)()

				valclass.Serialize(jsonData[key])
				setattr(self,key, valclass)

			elif isinstance(getattr(self,key), int ) :
				setattr(self,key, int(jsonData[key]))
			else :
				setattr(self,key, jsonData[key])

	#Ausgabe Json
	def ToJson(self):
		jsonDict = self.__ToDictionary()
		jsonstring = json.dumps(jsonDict, ensure_ascii=False)
		return jsonstring

	#Karte erstellen
	def __ToDictionary(self):
		jsonDict = {}
		for key in self.__dict__.keys():
			if isinstance(getattr(self,key), JsonAdapter ) :
				jsonDict.update({key : getattr(self,key).__ToDictionary()})
			else :
				jsonDict.update({key : getattr(self,key)})
		return jsonDict

Wenn Sie leicht erklären

def Serialize(self, argJsonData) : Erstellen Sie jetzt einmal ein Wörterbuch aus json. Der Wert wird mit dem Variablennamen als Schlüssel verwendet. Im Fall einer Klasse wird die Klasse erneut generiert und serialisiert.

ToJson(self): Erstellen Sie dann im Gegenteil ein Wörterbuch mit dem Variablennamen als Schlüssel. Json

Wie benutzt man

Der Beispielcode ist unten.

sample.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import JsonAdapter

class Test(JsonAdapter.JsonAdapter):
    def __init__(self):
        self.num = 0
        self.str = ""
        self.test2 = Test2()

class Test2(JsonAdapter.JsonAdapter):
    def __init__(self):
        self.num = 0
        self.str = ""


if __name__ == "__main__":
    json = """{"test2": {"num": 200, "str": "def"}, "num": 100, "str": "abc"}"""
    test = Test()
    #Ausgangszustand
    print test.ToJson()

    test.Serialize(json)

    #Nach der Serialisierung
    print test.ToJson()

Ausgabeergebnis


{"test2": {"num": 0, "str": ""}, "num": 0, "str": ""}
{"test2": {"num": 200, "str": "def"}, "num": 100, "str": "abc"}

Der Ausgangszustand und das Ergebnis nach der Serialisierung werden ausgegeben. Sie können bestätigen, dass es normal serialisiert werden kann und dass es kein Problem mit der Ausgabe gibt.

Als Einschränkung muss es von der PDO-Klasse geerbt werden. Der Punkt ist, dass der Variablenname und der Schlüsselname vereinheitlicht werden müssen.

das ist alles. Ich dachte, ich hätte es richtig angefasst Python ist interessant, nicht wahr?

Recommended Posts

Ich habe versucht, eine Klasse zu erstellen, mit der Json in Python problemlos serialisiert werden kann
Ich habe versucht, einen Formatierer zu entwickeln, der Python-Protokolle in JSON ausgibt
Ich möchte eine Prioritätswarteschlange erstellen, die mit Python (2.7) aktualisiert werden kann.
Ich möchte mit Python ein Fenster erstellen
So erstellen Sie eine JSON-Datei in Python
Ich möchte Timeout einfach in Python implementieren
Ich habe versucht, einen Pseudo-Pachislot in Python zu implementieren
Ich habe versucht, mit Selenium + Python einfach ein vollautomatisches Anwesenheitssystem zu erstellen
Ich habe versucht, API list.csv mit Python aus swagger.yaml zu erstellen
Ich habe versucht, einen eindimensionalen Zellautomaten in Python zu implementieren
Ich habe versucht, "ein Programm, das doppelte Anweisungen in Python entfernt"
Ich habe versucht "Wie man eine Methode in Python dekoriert"
Ich habe eine Klasse in Python erstellt und versucht, Enten zu tippen
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Ich habe versucht, eine Klasse für die Suche nach Dateien mit der Glob-Methode von Python in VBA zu erstellen
Ich habe versucht, einen Linebot zu erstellen (Implementierung)
Ich habe versucht, eine Serverumgebung zu erstellen, die unter Windows 10 ausgeführt wird
Ich habe versucht, PLSA in Python zu implementieren
Ich habe versucht, Permutation in Python zu implementieren
[Python / Django] Erstellen Sie eine Web-API, die im JSON-Format antwortet
Ich habe versucht, PLSA in Python 2 zu implementieren
[Python] Ein Memo, das ich versucht habe, mit Asyncio zu beginnen
Ich habe versucht, mit Python eine Liste von Primzahlen zu erstellen
Ich habe versucht, ein missverstandenes Gefangenendilemma in Python zu implementieren
Ich habe versucht, ADALINE in Python zu implementieren
Ich habe versucht, einen Generator zu erstellen, der mit Python eine C # -Containerklasse aus CSV generiert
Ich habe versucht, PPO in Python zu implementieren
Ich habe versucht, mit einem Foto einfach ein hochpräzises 3D-Bild zu erstellen [1]. (Die Tiefe kann jetzt in PNG bearbeitet werden.)
[Python] Ich habe eine Klasse erstellt, die schnell einen Dateibaum schreiben kann
Eine Geschichte, die nicht funktioniert hat, als ich versucht habe, mich mit dem Python-Anforderungsmodul anzumelden
Ich habe eine Webanwendung in Python erstellt, die Markdown in HTML konvertiert
Ich habe versucht, ein Programm zu erstellen, das Hexadezimalzahlen mit Python in Dezimalzahlen konvertiert
[Outlook] Ich habe versucht, mit Python automatisch eine tägliche Berichtsmail zu erstellen
Ich habe ein Beispiel für den Zugriff auf Salesforce mit Python und Bottle erstellt
Ich habe versucht, Trumps Kartenspiel in Python zu implementieren
Ich möchte einfach ein Rauschmodell erstellen
Ein Memo, das ich schnell in Python geschrieben habe
Ich habe versucht, mit Python ein Tippspiel zu spielen
Ich habe eine Klasse in Python3 und Java geschrieben
Sie können auch mit Python problemlos eine GUI erstellen
Ich habe versucht, TOPIC MODEL in Python zu implementieren
Python: Erstellen Sie eine Klasse, die entpackte Zuweisungen unterstützt
Ich habe versucht, ein Python 3-Modul in C hinzuzufügen
Ich habe versucht, eine selektive Sortierung in Python zu implementieren
Erstellen Sie ein Plugin, mit dem Sie in Python nach Registerkarten für Sublime Text 3 suchen können
Ich habe PyQCheck, eine Bibliothek, die QuickCheck mit Python ausführen kann, in PyPI registriert.
Ich habe versucht, die Python-Bibliothek "pykakasi" zu verwenden, die Kanji in Romaji konvertieren kann.
Ich habe versucht zu erklären, wozu der Python-Generator so einfach wie möglich ist.
Als ich versuchte, mit Python eine virtuelle Umgebung zu erstellen, funktionierte dies nicht
[Azure] Ich habe versucht, eine virtuelle Linux-Maschine mit Azure von Microsoft Learn zu erstellen
[Python] Ich habe versucht, eine Shiritori-KI zu erstellen, die den Wortschatz durch Schlachten verbessert
Ich habe versucht, ein scheinbar Windows-Snipper-Tool mit Python zu implementieren
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
Analysieren Sie eine JSON-Zeichenfolge, die in eine Datei in Python geschrieben wurde
Ich möchte in Python schreiben! (2) Schreiben wir einen Test