Home > Article > Backend Development > Introduction to the usage of json and pickle
json
json is one of the modules that performs serialization and deserialization of program data types. It can be used to exchange data under different platforms and different programs or as a method for programs to temporarily save data. Let’s take a look at the usage of 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"])
The contents of the two files are shown above. The first file serializes a dictionary into characters. string (using the dumps() method) and then writing to a file (demo.txt). The second file is to read the contents of demo.txt, then use the loads() method to deserialize it into an executable dictionary object, and print out the contents of the dictionary's "name".
In fact, in addition to the two methods dumps() and loads(), json has two simpler methods: dump() and load(). The following demonstrates usage:
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"])
By comparison, dump() and load() encapsulate dumps(), loads() and file read and write operations.
pickle
##pickle also has the above four methods of json, and the usage is exactly the same , I will not demonstrate it here. But pickle is more powerful. json can only serialize some relatively simple data objects, such as lists, dictionaries, etc. Pickle can also serialize complex objects such as functions and classes.
The following demonstrates how pickle serializes and deserializes a function.
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")The above also shows the contents of the two files. Note. Pay attention to the following issues: 1. When it comes to serialization and deserialization of functions, classes, etc., when opening the file, it must be opened in binary form. Pay attention to the "wb" in the display. ", "rb" 2. If you want the deserialized function to be executed in a new file, you must copy the source code of the previously defined function to the new file (note pickle_ Deserialize the content within the two rows of # lines in .py), otherwise it will not run. If there is no content within the # number, the program will report an error: AttributeError: Can't get attribute 'hello' on
The above is the detailed content of Introduction to the usage of json and pickle. For more information, please follow other related articles on the PHP Chinese website!