用于序列化的两个模块
- json,用于字符串 和 python数据类型间进行转换
- pickle,用于python特有的类型 和 python的数据类型间进行转换
Json模块提供了四个功能:dumps、dump、loads、load
pickle模块提供了四个功能:dumps、dump、loads、load
dumps和dump函数。两个函数的唯一区别就是dump把python对象转换成json对象或pickle对象生成一个fp的文件流,而dumps则是生成了一个字符串:
json对象或pickle对象转换成python对象的一个过程,常用的两个函数是loads和load函数。区别跟dump和dumps是一样的。
json模块:
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
python类型数据和JSON数据格式互相转换
json序列化:
import json dict_1 = {'a':1,'b':2} fq = open('yourapp.log','w') fq.write(json.dumps(dict_1)) fq.close()
json反序列化:
import json with open('yourapp.log','r') as fq: dist_1 = json.loads(fq.read()) print(dist_1) print(type(dist_1))
pickle模块:
与JSON不同的是pickle不是用于多种语言间的数据传输,它仅作为python对象的持久化或者python程序间进行互相传输对象的方法,因此它支持了python所有的数据类型。
pickle序列化:
import pickle def yujian(): return 'I wait for people, how far is she in the future?' dict_1 = { 'name':'Angle', 'age':'21', 'func':yujian } with open('mydream','wb') as aq: aq.write(pickle.dumps(dict_1))
pickle反序列化:
import pickle def yujian(): return 'I wait for people, how far is she in the future?' if __name__ == "__main__": with open('mydream','rb') as aq: dict_1 = pickle.loads(aq.read()) print(dict_1['func'](),dict_1['name'])
JSON和pickle模块的区别
1、JSON只能处理基本数据类型。pickle能处理所有Python的数据类型。
2、JSON用于各种语言之间的字符转换。pickle用于Python程序对象的持久化或者Python程序间对象网络传输,但不同版本的Python序列化可能还有差异