Answers:
JSON是一种将对象编码为字符串的格式。序列化意味着将一个对象转换为该字符串,反序列化是其反向操作(转换字符串-> object)。
传输数据或将其存储在文件中时,数据必须是字节字符串,但是很少有这种格式的复杂对象。序列化可以将这些复杂的对象转换为字节字符串以供此类使用。字节串发送后,接收方将不得不从字节串中恢复原始对象。这称为反序列化。
说,您有一个对象:
{foo: [1, 4, 7, 10], bar: "baz"}
序列化为JSON会将其转换为字符串:
'{"foo":[1,4,7,10],"bar":"baz"}'
可以存储或通过电线发送到任何地方。然后,接收者可以反序列化此字符串以返回原始对象。{foo: [1, 4, 7, 10], bar: "baz"}
。
"{foo: [1, 4, 7, 10], bar: "baz"}"
在数据存储的上下文中,序列化(或序列化)是将数据结构或对象状态转换为可以存储(例如,在文件或内存缓冲区中)或传输(例如,通过网络连接)的格式的过程链接),并在以后进行重建。[...]
的相反的操作,从一系列的字节中提取的数据结构,是反序列化。来自维基百科
在Python中,“序列化”除了将给定的数据结构(例如a dict
)转换为有效的JSON吊坠(对象)外,什么也不做。
True
将转换为JSON true
,然后将字典本身封装在引号中。True
/ False
,true
/false
json
是进行序列化的标准方法:代码示例:
data = {
"president": {
"name": "Zaphod Beeblebrox",
"species": "Betelgeusian",
"male": True,
}
}
import json
json_data = json.dumps(data, indent=2) # serialize
restored_data = json.loads(json_data) # deserialize
# serialized json_data now looks like:
# {
# "president": {
# "name": "Zaphod Beeblebrox",
# "species": "Betelgeusian",
# "male": true
# }
# }
资料来源:realpython.com
使用Python进行序列化和反序列化的说明
在python中,pickle模块用于序列化。因此,序列化过程在Python中称为酸洗。Python标准库中提供了此模块。
使用pickle进行序列化
import pickle
#the object to serialize
example_dic={1:"6",2:"2",3:"f"}
#where the bytes after serializing end up at, wb stands for write byte
pickle_out=open("dict.pickle","wb")
#Time to dump
pickle.dump(example_dic,pickle_out)
#whatever you open, you must close
pickle_out.close()
PICKLE文件(可以通过记事本之类的文本编辑器打开)包含以下内容(序列化数据):
€} q(KX 6qKX 2qKX fqu。
用泡菜反序列化
import pickle
pickle_in=open("dict.pickle","rb")
get_deserialized_data_back=pickle.load(pickle_in)
print(get_deserialized_data_back)
输出:
{1:“ 6”,2:“ 2”,3:“ f”}