json与pickle模块

Python-19

1. json与pickle模块

什么是序列化和反序列化

  • 序列化:是将内存中的数据结构,转换成一种中间格式,将转化后的中间格式存储到硬盘,或者基于网络传输
  • 反序列化:是将硬盘中或者网路中传过来的中间格式,转换成内存中的数据结构

2. 序列化和反序列化有什么用

  • 将状态通过中间格式存储到硬盘,可以保存程序的运行状态
  • 数据可以跨平台交互,不同的编程语言,通过序列化成中间格式就可以互相交互
  • 存到硬盘的文本文件都是字符串,再次使用时,需要将硬盘中的数据转化成以前的数据类型状态

3. json与pickle模块的区别

json

  • 优点:jison具有跨平台性,所有编程语言都能转成json格式
  • 缺点:只能支持python的部分数据类型

pickle

  • 优点:支持python的所有数据了理性
  • 缺点:pickle只能识别python,不能跨平台

③ JSON类型和Python类型的对应关系

Alt text

4. json的的序列化

json.dumps(内存的数据)

Alt text

  • 说明:json不能识别单引号,只能使用双引号,因此而,json序列化的过程中会把单引号转成双引号
# 导入json模块
import json
# 内存中数据
dic={'name':'xut','age':18,'sex':'male'}
# json序列化:内存中的数据类型---->json中间格式
json_str=json.dumps(dic)
# print(json_str,type(json_str))
# 将序列化中间格式写到文件
with open(r'db.json','wt',encoding='utf-8') as f:
    f.write(json_str)

Alt text

json.dump(内存中数据对象,文件))

  • json.dump可以将上面的两步进行合并
import json
dic={'name':'xut','age':18,'sex':'male'}
with open(r'db.json','wt',encoding='utf-8') as f:
    json.dump(dic,f)

③ 总结

  • 序列化不同的数据类型,就写到不同的文件中

5. json的反序列化

json.loads(文件中的中间格式)

Alt text

猜你喜欢

转载自www.cnblogs.com/itone/p/9203895.html