序列化
api接口开发,最核心最常见的一个过程就是序列化,所谓序列化就是把数据转换格式,序列化可以分为两个阶段:
序列化:把我们识别的数据转换成指定的格式提供给别人。
例如:把我们在django中获取的数据默认是模型对象,但是模型对象数据无法直接提供给前端或别的平台使用,所以我们需要把数据进行序列化,编程字符串或者json数据,提供给别人
反序列化:把别人提供的数据转换或者还原成我们需要的格式。
python中的序列化
- json
- pickle
#dump load 用于文件写入存储 #dumps loads 用于网络传输(网络编程)
使用
import json
lst = [1,2,3,4,5]
a = json.dumps(lst) #转换为可传输的格式
print(a,type(a))利用json转换原来格式
s1 = json.loads(a)
print(s1[0],type(s1))
扩展序列化时间
序列化时间 import json from datetime import datetime from datetime import date
对含有日期格式数据的json数据进行转换
class JsonCustomEncoder(json.JSONEncoder):
def default(self, field):
if isinstance(field,datetime):
return field.strftime('%Y-%m-%d %H:%M:%S')
elif isinstance(field,date):
return field.strftime('%Y-%m-%d')
else:
return json.JSONEncoder.default(self,field)d1 = datetime.now()
dd = json.dumps(d1,cls=JsonCustomEncoder)
print(dd)
前端中的序列化
JSON.stringify //序列化
JSON.parse //反序列化
var a = [1,2,3,4,5];
var s = JSON.stringify(a); //将数组a序列化为可传输格式
var s1 = JSON.parse(s); //再将原来可传输格式转化为原来格式
Django提供的序列化工具
from django.http import HttpResponse
此模块序列化传输的数据,前端无需再次反序列化,直接可以使用