zoukankan      html  css  js  c++  java
  • 序列化

    序列化

    #序列化
       #- django内置
       #- json + 扩展
    
    #关于Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,特别的Ajax请求一般返回的为Json格式。
    

    a. 两种方式

    #a.serializers:
    
    	from django.core import serializers
    
        ret = models.Server.objects.all()
        data = serializers.serialize("json", ret)
    
        return HttpResponse(data)
    
    
    	#浏览器反问
    	http://127.0.0.1:8000/backend/curd_json.html
    	------------------结果-------------------
    	所有的都显示出来
    
    #b. json.dumps
    
        ret = models.Server.objects.values("id","hostname")
        data = json.dumps(list(ret))
    
        return HttpResponse(data)
    
    	#浏览器反问
    	http://127.0.0.1:8000/backend/curd_json.html
    	----------------结果---------------------
        [{"hostname": "c2.com", "id": 1}] 

    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)
    View Code

      

     

      

     

  • 相关阅读:
    oracle 下创建数据实例
    MyEclipse7.02注册码
    liferay 5.1学习遇到的错误
    详解struts2中struts.properties
    cas部署到linux登陆也出现异常
    java 字符串和输入流互转
    ASP 的Base64加密 与ASP MD5加密
    Struts2直接下载从数据中的blob类型字段( Struts2.0下载文件流)
    java 汉字转拼音
    java调shell,可以输入参数
  • 原文地址:https://www.cnblogs.com/golangav/p/7271917.html
Copyright © 2011-2022 走看看