系列文章目录
一、序列化与反序列化
-
序列化:
序列化是一个过程,它会把数据转换成另一种格式,通常为json或pickle格式,前者是各种语言通用的,后者是python专属的。
好处是:
-
方便在网络中传输;
-
保存到本地文件进行存储;
-
跨平台交换数据,比如python编写的程序所产生的数据,可以序列化为json(JavaScript Object Notation)格式,交给其他语言编写的程序,然后这些程序就能够使用这些数据了。
-
-
反序列化:
反序列化就是将序列化反过来的一个过程。
二、json和pickle模块
json和pickle主要用于序列化与反序列化:
1. json模块
-
将数据序列化为json格式–
dumps()
a = [1, 2, False, {'a': True, 'b': None}] b = json.dumps(a) print(type(b), b) # 打印:<class 'str'> [1, 2, false, {"a": true, "b": null}]
因为python没有json的数据类型,所以用str类型进行了保存。
-
将数据序列化并保存到文件–
dump('数据',文件对象)
-
对json格式的数据进行反序列化–
loads()
c = json.loads(b) print(type(c), c) # 打印:<class 'list'> [1, 2, False, {'a': True, 'b': None}]
-
将json数据从文件读出并反序列化为字典–
load(文件对象)
注意:在python3.5中,无法反序列化bytes数据,必须解码成str类型才可以。
2. pickle模块
pickle模块的序列化与反序列化方法,与上面的json模块一模一样。
- pickle协议和json的区别 :
- json是一种文本序列化格式(它输出unicode文本,默认编码为utf-8),而pickle是二进制序列化格式;
- json是人类可读的,而pickle则不是;
- json是可互操作的,并且在Python生态系统之外广泛使用,而pickle是特定于Python的;