Home  >  Article  >  Backend Development  >  Introduction to the usage of json and pickle

Introduction to the usage of json and pickle

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

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

3. You can change the source code of the copied function. You only need to ensure that the function name matches the one used for serialization. The function names are the same. If the function is called after the change, it will be executed according to the changed function (of course, this change must be necessary)

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn