Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in die Verwendung von JSON und Pickle

Einführung in die Verwendung von JSON und Pickle

PHP中文网
PHP中文网Original
2017-06-21 16:48:501158Durchsuche

json

json ist eines der Module, das die Serialisierung und Deserialisierung von Programmdatentypen durchführt. Es kann zum Austausch von Daten unter verschiedenen Plattformen und verschiedenen Programmen oder als Methode für Programme zur vorübergehenden Datenspeicherung verwendet werden. Werfen wir einen Blick auf die Verwendung von JSON:

 1 #json_序列化.py 2 import json 3 dic={ 4     "id":"123456", 5     "name":"Jack", 6     "country":"China" 7     } 8 date=json.dumps(dic) 9 with open("demo.txt","w") as f:10     f.write(date)11 12 #json_反序列化.py13 import json14 with open("demo.txt","r") as f:15     dic1=json.loads(f.read())16 print(dic1["name"])

Das Obige zeigt den Inhalt der beiden Dateien. Die erste Datei ist ein Wörterbuch Sequenz Konvertieren Sie es in einen String (mit der dumps()-Methode) und schreiben Sie es in eine Datei (demo.txt). Die zweite Datei besteht darin, den Inhalt von demo.txt zu lesen, ihn dann mit der Methode „loads()“ in ein ausführbares Wörterbuchobjekt zu deserialisieren und den Inhalt des „Namens“ des Wörterbuchs auszudrucken.

Tatsächlich verfügt JSON zusätzlich zu dumps() undloads() über zwei einfachere Methoden: dump() und load(). Die Verwendung wird unten demonstriert:

 1 #json_序列化2.py 2 import json 3 dic={ 4     "id":"123456", 5     "name":"Jack", 6     "country":"China" 7     } 8 with open("demo.txt","w") as f: 9     date=json.dump(dic,f)10 11     12 13 #json_反序列化2.py14 import json15 with open("demo.txt","r") as f:16     dic1=json.load(f)17 print(dic1["name"])

Ein Vergleich zeigt, dass dump() und Load() Dumps()-, Load()- und Datei-Lese- und Schreibvorgänge kapseln.

pickle

pickle verfügt auch über die oben genannten vier Methoden von JSON und deren Verwendung ist genau das Gleiche, ich werde es hier nicht demonstrieren. Aber Gurke ist stärker. JSON kann nur einige relativ einfache Datenobjekte wie Listen, Wörterbücher usw. serialisieren. Pickle kann auch komplexe Objekte wie Funktionen und Klassen serialisieren.

Im Folgenden wird gezeigt, wie Pickle eine Funktion serialisiert und deserialisiert.

 1 #pickle_序列化.py 2 import pickle 3 #定义函数hello 4 def hello(name): 5     print("hello",name) 6 #定义列表,把hello也存进去 7 dic1={ 8     "name":"Mark", 9     "func":hello10     }11 with open("demo.txt","wb") as f:12     pickle.dump(dic1,f)13 14 #pickle_反序列化.py15 import pickle16 #######################17 def hello(name):18     print("hello",name)19 #######################20 with open("demo.txt","rb")as f:21     dic2=pickle.load(f)22 dic2["func"]("Jack")

Das Obige zeigt auch den Inhalt der beiden Dateien. Achten Sie auf die folgenden Punkte:

1. Wenn es um die Serialisierung und Deserialisierung von Funktionen, Klassen usw. geht, muss diese beim Öffnen in binärer Form geöffnet werden. in der Anzeige. ", "rb"

2. Wenn Sie möchten, dass die deserialisierte Funktion in einer neuen Datei ausgeführt wird, müssen Sie den Quellcode der zuvor definierten Funktion in die neue Datei kopieren (beachten Sie pickle_ Deserialize der Inhalt innerhalb der beiden Zeilen von # Zeilen in .py), andernfalls wird es nicht ausgeführt. Wenn innerhalb der #-Nummer kein Inhalt vorhanden ist, meldet das Programm einen Fehler: AttributeError: Can't get attribute 'hello' on < Modul '__main__' aus 'D:/Users/LENOVO/PycharmProjects/Myfirstflask/about_json.py'>

3. Sie können den Quellcode der kopierten Funktion ändern Der Name ist derselbe wie der, der für die Serialisierung verwendet wird. Wenn die Funktion nach der Änderung aufgerufen wird, wird sie entsprechend der geänderten Funktion ausgeführt (diese Änderung muss natürlich erforderlich sein)

Das obige ist der detaillierte Inhalt vonEinführung in die Verwendung von JSON und Pickle. 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