Python 序列化JSON串

来源:互联网 发布:java trimend 编辑:程序博客网 时间:2024/05/16 01:13

json使用dumps()函数进行序列化,返回的是字符串

import jsondict1 = dict(name='tom',age=20,grade=2)json.dumps(dict1)

结果:
'{"grade": 2, "age": 20, "name": "tom"}'

使用load()或loads()进行反序列化,反序列化得到的字符串都默认是unicode 

json_str = '{"grade": 2, "age": 20, "name": "tom"}'json.loads(json_str)

结果:
{u'grade': 2, u'age': 20, u'name': u'tom'}


将一个类的实例化对象进行序列化,在对一个类的实例化对象进行序列化时不能像字符串那样直接进行序列化,需要借助转换函数进行序列化,dumps序列化参数参考地址:参数地址

#-*- coding:utf-8 -*-import jsonclass student(object):"""docstring for student"""def __init__(self,name,age,grade):self.name = nameself.age = ageself.grade = gradedef student_fun(stu):return {'name':stu.name,'age':stu.age,'grade':stu.grade}if __name__ == '__main__':stu = student('test',23,'three')print json.dumps(stu,default=student_fun)
先将类的实例化对象转换成dict然后再进行序列化

在进行反序列化的时候也是一样的道理,也需要一个转换函数

#-*- coding:utf-8 -*-import jsonclass student(object):"""docstring for student"""def __init__(self,name,age,grade):self.name = nameself.age = ageself.grade = gradedef student_json(stu):return student(stu['name'],stu['age'],stu['grade'])if __name__ == '__main__':json_str = '{"age":20,"grade":"three","name":"er"}'print (json.loads(json_str,object_hook=student_json))

先把序列化的字符串转换成字典,再将字典转换成类实例对象

pickle的序列化和反序列化

#-*- coding:utf-8 -*-import pickledef write_file(path):fp = open(path,'wb')pickle.dump('fdajdasuiwe',fp)fp.close()def read_file(path):fp = open(path,'rb')context = pickle.load(fp)print contextfp.close()if __name__ == '__main__':write_file('C:\\Users\\Administrator\\Desktop\\testt\\e.txt')read_file('C:\\Users\\Administrator\\Desktop\\testt\\e.txt')


原创粉丝点击