Python 序列化JSON串

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

import json
dict1 = 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 json

class student(object):
	"""docstring for student"""
	def __init__(self,name,age,grade):
		self.name = name
		self.age = age
		self.grade = grade

def 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 json

class student(object):
	"""docstring for student"""
	def __init__(self,name,age,grade):
		self.name = name
		self.age = age
		self.grade = grade

def 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 pickle

def 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 context
	fp.close()
if __name__ == '__main__':
	write_file('C:\\Users\\Administrator\\Desktop\\testt\\e.txt')
	read_file('C:\\Users\\Administrator\\Desktop\\testt\\e.txt')


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值