json序列化
序列化
#序列化 #- django内置 #- json + 扩展
a. 两种方式
#a.serializers:
from django.core import serializers
ret = models.Server.objects.all()
data = serializers.serialize("json", ret)
return HttpResponse(data)
#b. json.dumps
ret = models.Server.objects.values("id","hostname")
data = json.dumps(list(ret))
return HttpResponse(data)
b. 由于json.dumps时无法处理datetime日期,所以可以通过自定义处理器来做扩展,如:
#每个字段都会验证一遍,都会执行default函数
import json
from datetime import date
from datetime import datetime
def curd_json(request):
class JsonCustomEncoder(json.JSONEncoder):
def default(self, value): #每个字段
if isinstance(value, datetime):
return value.strftime('%Y-%m-%d %H:%M:%S')
elif isinstance(value, date):
return value.strftime('%Y-%m-%d')
else:
return json.JSONEncoder.default(self, value)
ret = models.Server.objects.values("id","hostname","create_at")
data = json.dumps(list(ret),cls=JsonCustomEncoder) #cls是一个类,默认是json.JSONEncoder类
return HttpResponse(data)

浙公网安备 33010602011771号