序列化

序列:字符串

序列化:将其它数据类型转换成字符串的过程。

反序列化:字符串转成其它数据类型。

序列化的目的

1:以某种存储形式使用自定义对象持久化。

2:将对象从一个地方传递到另一个地方。

3:是程序更具有维护性。

json 和 pickle 模块

用于序列化的两个模块

json,用于字符串和 python 数据类型间进行转换。

pickle,用于 python 特有的数据类型和 python 的数据类型进行转换。

注意:pickle 仅用于 python

  • json
# dumps 和 loads
import json dic = {'a':1,'b':2,'c':3}
res = json.dumps(dic) # 序列化:将一个字典转换成一个字符串
print(res,type(res))
# {"a": 1, "b": 2, "c": 3} <class 'str'>
res1 = json.loads(res) # 反序列化:将一个字符串格式的字典转换成一个字典
# 注意:要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示。
print(res1,type(res1))
# {'a': 1, 'b': 2, 'c': 3} <class 'dict'> # 也可处理嵌套的数据类型
lis = [1,2,['a','b','c'],3,{'k1':'a','k2':'b','k3':'c'}]
res = json.dumps(lis)
print(res)
# [1, 2, ["a", "b", "c"], 3, {"k1": "a", "k2": "b", "k3": "c"}]
res1 = json.loads(res)
print(res1)
# [1, 2, ['a', 'b', 'c'], 3, {'k1': 'a', 'k2': 'b', 'k3': 'c'}]
# dump 和 load
import json dic = {'name':'zkim','age':18,'hobby':'running'}
with open('user_info','w',encoding='utf-8')as f:
json.dump(dic,f)
# dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件 with open('user_info','r',encoding='utf-8')as f:
res = json.load(f)
print(res)
# load方法接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回
  • pickle
import pickle

# dumps 和 loads
dic = {'name':'zkim','hobby':'running'}
str_dic = pickle.dumps(dic)
print(str_dic) # 一串二进制 str_dic1 = pickle.loads(str_dic)
print(str_dic1)
# {'name': 'zkim', 'hobby': 'running'} # dump 和 load
with open('userinfo.txt','wb')as f:
pickle.dump(dic,f)
with open('userinfo.txt','rb')as f:
res = pickle.load(f)
print(res)
# {'name': 'zkim', 'hobby': 'running'}

最新文章

  1. CSS选择器的权重与优先规则?
  2. 【代码笔记】iOS-自定义导航条颜色
  3. 如何关闭eslint
  4. Android 手机蓝牙接收文件夹
  5. vs2013 内置IIS Express相关问题
  6. 【转载】Velocity模板引擎的介绍和基本的模板语言语法使用
  7. 提高php编程效率技巧
  8. Java API —— Calendar类
  9. Android打包失败Proguard returned with error code 1. See console
  10. (转载)PHP删除数组中的特定元素的代码
  11. 函数式编程做用户登陆注册练习-pycharm上
  12. Struts2返回Json数据(使用Struts2插件)
  13. Android下调用收发短信邮件等
  14. hdu5044 Tree 树链拆分,点细分,刚,非递归版本
  15. 密钥public/private key登陆linux
  16. 使用jekyll和Github搭建个人博客
  17. angular之表达式
  18. Lodop如何设置预览后导出带背景的图,打印不带背景图
  19. [UVALive 3661] Animal Run
  20. 使用flask-alchemy 过程中报错KeyError: &#39;SQLALCHEMY_TRACK_MODIFICATIONS&#39;

热门文章

  1. js 将网络图片格式转为base64 canvas 跨域
  2. java中 什么是反射?
  3. golang通过ssh实现远程文件传输
  4. VVDocumenter-Xcode
  5. 使用Neo4j分析《权力的游戏》
  6. new Handler()和new Handler(Looper.getMainLooper())的区别是什么?
  7. Angular 自定义模块以及配置路由实现模块懒加载
  8. Expression: __acrt_first_block == header
  9. Elasticsearch 7.x文档基本操作(CRUD)
  10. 【产品】C转B