Python序列化与反序列化——json和pickle
来源:互联网 发布:二次元轻小说软件 编辑:程序博客网 时间:2024/06/06 01:56
简介
序列化:将Python里的基本类型如字典、列表、数组等序列化为字符串
反序列化:将字符串反序列化为Python里的基本类型如字典、列表等
用于序列化的两个模块
json,用于字符串 和 python数据类型间进行转换
pickle,用于python特有的类型 和 python的数据类型间进行转换
Json模块提供了四个功能:dumps、dump、loads、load
pickle模块提供了四个功能:dumps、dump、loads、load
常用:
1. json
2. pickle
json
序列化
import jsondic = {'Name':'Alex'}result = json.dumps(dic)print(dic,type(dic))print(result,type(result))
反序列化
import jsons = '{"Name":"Alex"}'print(s,type(s))ret = json.loads(s)print(ret,type(ret))
相互转换
import requestsimport jsonr = requests.get('http://wthrcdn.etouch.cn/weather_mini?city=杭州')r.encoding = 'utf-8'print(r.text)print()dic = json.loads(r.text)print(dic,type(dic))
dump 与 load
dump 的功能,将序列化的内容写入文件:
import requestsimport jsonr = requests.get('http://wthrcdn.etouch.cn/weather_mini?city=杭州')r.encoding = 'utf-8'print(r.text)print()dic = json.loads(r.text)print(dic,type(dic))json.dump(dic,open('db','w',encoding='utf-8'))#将序列化的内容写入文件
load 的功能,将文件读入,反序列化:
import requestsimport jsonr = requests.get('http://wthrcdn.etouch.cn/weather_mini?city=杭州')r.encoding = 'utf-8'print(r.text)print()dic = json.loads(r.text)print(dic,type(dic))ret = json.load(open('db','r',encoding='utf-8'))#将读入文件,反序列化为Python类型数据print(ret)
优势
跨语言操作,基于字符串类型,适用范围广。
劣势
只有基础的几种类型:
+——————-+—————+
| Python | JSON |
+===================+===============+
| dict | object |
+——————-+—————+
| list, tuple | array |
+——————-+—————+
| str | string |
+——————-+—————+
| int, float | number |
+——————-+—————+
| True | true |
+——————-+—————+
| False | false |
+——————-+—————+
| None | null |
+——————-+—————+
pickle
pickle只能Python用,其他语言不能用,同样有dumps、loads,但是编码格式只有Python读得懂。但是,如果写了个类class,用json的dumps时会失败,因为json试用范围为以上几种。
序列化
import picklelist = [1,2,3,4]ret = pickle.dumps(list)print(ret)print(type(ret))
反序列化
new_list = pickle.loads(ret)print(new_list)
dump 与 load
dump 的功能,将序列化的字节byte内容写入文件:
import picklelist = [1,2,3,4]pickle.dump(list,open('db','wb'))
load 的功能,将文件读入,反序列化:
import picklelist = pickle.load(open('db','rb'))print(list)
优势
对所有类型,特别是复杂类型进行序列化操作,像面向对象的类。
劣势
仅适用于Python语言的应用,如Python游戏的读档、存档操作。Python版本间反序列化有问题。
- Python序列化与反序列化——json和pickle
- json和pickle的序列化与反序列化
- Python 序列化 与 反序列化 JSON 与 pickle 模块
- Python学习心得(五) random生成验证码、MD5加密、pickle与json的序列化和反序列化
- pickle序列化与反序列化
- python学习之路(json & pickle 模块 ---序列化,反序列化)
- python pickle模块序列化反序列化---存储对象
- [代码笔记] python 之 pickle序列化与反序列化
- python类库32[序列化和反序列化之pickle]
- 【python系列】使用pickle进行数据的序列和反序列化
- Python-json与pickle数据序列化
- python序列化模块json和pickle
- 【Python】|JSON序列化与反序列化
- Python Json序列化与反序列化
- python 学习 -- json的序列化和反序列化
- python的(json序列化和反序列化)
- json 与 xml 序列化和反序列化工具
- Json序列化 与反序列化
- 2017.9.16 WC模拟赛 总结
- 八大排序算法
- 异步刷新及一些心得
- oop Tab
- 大数加减
- Python序列化与反序列化——json和pickle
- Markdown
- Intellj IDEA使用教程
- 笔记本 ubuntu 亮度调节 命令行
- javaweb高校学生党员管理信息系统
- 树莓派通过ngrok实现内网穿透
- 新的开始,未来充满期待
- hdu1520 Anniversary party 树形dp
- java.lang.ClassNotFoundException: orcale.jdbc.driver.OracleDrive错误