1.用json模块来进行序列化和反序列化
注意:用json序列化的数据类型得到的文件后缀名必须是json。因为如果不是json后缀,别人也不知道这是用json序列化的文件。
序列化:json.dumps(需要转换成字符串的对象),将数据类型转换成字符串,不会存到文件里。
import json dicts = { 'roles':[ {'role':'saber','name':'dapeng','life':50}, {'role':'shengqi','name':'archer','life':60} ] } f = open('111.json','w') d = json.dumps(dicts) print(d,type(d)) # {"roles": [{"role": "saber", "name": "dapeng", "life": 50}, {"role": "shengqi", "name": "archer", "life": 60}]} <class 'str'>
序列化:json.dump(obj,文件) 将数据类型转换城字符串的同时也存入到文件中。
import json dicts = { 'roles':[ {'role':'saber','name':'dapeng','life':50}, {'role':'shengqi','name':'archer','life':60} ] } f = open('111.json','w') d = json.dump(dicts,f) print(d,type(d))
2反序列化 json.loads(字符串对象)
dicts = { 'roles':[ {'role':'saber','name':'dapeng','life':50}, {'role':'shengqi','name':'archer','life':60} ] } import json d = json.dumps(dicts) print(json.loads(d))
json.load(文件对象) 将文件中的字符串转换成字典等类型。
import json f = open('111.json','r') print(json.load(f))
3.json.dumps()和json.loads() 只是在内存中,不存储到硬盘里,存在的意义是什么?
①·把你的内存数据,通过网络,发送给其他人进行共享。网络共享只能通过字符串格式发送,所以要用json.dumps转换成字符串格式。
②·定义了不同语言之间的交互规则。
1.纯文本 缺点:不能共享复杂的数据类型,如嵌套。
2.xml 缺点:占空间大(如<year>2018</year>,而字典里可以用'year':2018,更省空间)
3.json 简单,可读性好,占用内存较小
4.json.dump() dump多次可以。
import json f = open('112.json','w') a = [1,2,3,4,5] b = {1:2,2:3,3:4,4:5,5:6} json.dump(a,f) json.dump(b,f)
那么load多次可以吗?
dump多次的文件,不可以load一次或者多次。
import json f = open('112.json','r') json.load(f)