序列化与反序列化Json和Pickle

序列化与反序列化Json和Pickle

1,什么是序列化?

序列化就是将内存中的数据结构转换成一种中间格式,存储到硬盘或者基于网络传输。

2,什么是反序列化?

反序列化就是硬盘中或网络中传来的一种数据格式转换成内存中数据结构。

内存中结构化的数据<------>格式json<------->字符串<-------->保存文件中或基于网络传输

3,为什么要有序列化?

1.可以保存程序的运行状态

2.数据的跨平台交互。(例如:javer和python都能认识的中间的格式。)

4.怎么用序列化?

json:

优点:json具有跨平台性。

缺点:只能支持或者对应python部分的数据类型。

JSON表示的对象就是标准的JavaScript语言的对象,JSON和Python内置的数据类型对应如下:

序列化与反序列化Json和Pickle

 pickle:

优点:可支持或者对应所有的Python的数据类型

缺点:只能被Python识别,不能跨平台。

用法:

import json

dic={'name':'egon','age':18}

#序列化:内存中的数据类型--------》中间格式json

第一步:序列化得到json_str

json_str=json.dumps(dic)

第二步:把json_str写入文件

with open('db.json','wt',encoding='utf-8') as f:

f.write(json_str)

上面两步合为一步:

with open('db.json','wt',encoding='utf-8') as f:

json.dump(dic,f)

反序列化:

中间格式json------》内存中的数据类型

第一步:从文件中读取json_str

with open('db.json','rt',encoding='utf-8') as f:

json_str=f.read()

第二步:将json_str转化成内存中的数据类型

dic=json.loads(json_str)

以上两步合为一步:

with open('db.json','rt',encoding='utf-8') as f:

dic=json.load(f)