码迷,mamicode.com
首页 > Web开发 > 详细

序列化json模块

时间:2018-04-17 11:57:44      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:复杂   highlight   硬盘   别人   定义   arch   json序列化   print   语言   

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)

  

  

序列化json模块

标签:复杂   highlight   硬盘   别人   定义   arch   json序列化   print   语言   

原文地址:https://www.cnblogs.com/Roc-Atlantis/p/8862071.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!