序列化json模块

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)

  

  

posted @ 2018-04-17 09:49  Roc_Atlantis  阅读(192)  评论(0编辑  收藏  举报