• django序列化的几种方法 json


    class LoginView(View):
        def get(self,request):
            出错
            publish_list = Publisher.objects.all()
            return HttpResponse(json.dumps(publish_list))#无法打印,返回值是一个querset对象
            #c出错
            publish_list = list(Publisher.objects.all())
            return HttpResponse(json.dumps(publish_list))  # 无法打印,返回值是一个querset对象
            第一种打印全部
            publish_list = list(Publisher.objects.all().values())
            return HttpResponse(json.dumps(publish_list)) #json.dumps()函数是将字典转化为字符串
            第二种打印指定的name和email
            publish_list = list(Publisher.objects.all().values("name","email"))
            return HttpResponse(json.dumps(publish_list))
            第三种
            publish_list = Publisher.objects.all()
            temp = []
            for publish in publish_list:
                temp.append({
                    "name":publish.name,
                    "email":publish.email}
                )
                return HttpResponse(json.dumps(temp))
            第四种
            from django.forms.models import model_to_dict
            publish_list = Publisher.objects.all()
            temp = []
            for publish in publish_list:
                temp.append(model_to_dict(publish))
                return HttpResponse(json.dumps(temp))  #如果用HttpResponse(json.dumps(temp))这个返回给前端的是一个json字符串,如果要用需转换成JSON对象,前端需要json.parse()
            第五种
            from django.core import serializers
            publish_list = Publisher.objects.all()
            ret = serializers.serialize("json",publish_list)  #转化成json字符串
            return HttpResponse(ret)

    def json_test(request):
    data = {"name": "小黑", "age": 18}
    data2 = [11, 22, 33, 44]
    # import json
    # data_str = json.dumps(data2) # 把data字典,data2列表序列化成json格式的字符串
    # return HttpResponse(data_str)

    #如果用HttpResponse(json.dumps(temp))这个返回给前端的是一个json字符串,如果要用需转换成JSON对象,前端需要json.parse()
    只要前端发送的是Ajax请求,后端返回给前端的数据最好是字典形式的,这样变成JSON对象的话,前端就可以像字典一样操作 
    #JsonResponse中有contype application/json,返回给前端的是一个object对象,不用再转换,前端直接可以使用

    from django.http import JsonResponse   

    return JsonResponse(data2, safe=False)  #JsonResponse中有contype application/json,返回给前端的是一个object对象,不用再转换,直接可以使用
    return JsonResponse(data2, safe=False) #JsonResponse只能序列化字典格式的,要想序列化列表,需加safe=False

    import json

    s = '{"name":"xiaohei","age": 18}'
    # 把字符串反序列化成Python中的数据类型
    ret = json.loads(s)
    print(ret, type(ret)) #{'name': 'xiaohei', 'age': 18} <class 'dict'>

    # 把字典序列化成JSON字符串
    ret2 = json.dumps(ret)
    print(ret2, type(ret2)) #{"name": "xiaohei", "age": 18} <class 'str'>

     

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
    {#JSON字符串#}
    {#JSON.parse(): 用于将一个 JSON 字符串或者后端传来的JSON字符串转换为 JavaScript 对象,这样就可以像字典一样操作#}
    var s = '{"name":"jack"}';
    var data = JSON.parse(s);

    console.log(data);
    {#object类型#}
    console.log(typeof data);
    console.log(data.name); #
    {#像字典一样操作得到的值为jack#}
    </script>
    </head>
    <body>

    </body>
    </html>
    JSON.parse():   用于将一个 JSON 字符串或者后端传来的JSON字符串转换为 JavaScript 对象 
    console.log(JSON.parse(
    '{"name":"Yuan"}')); console.log(JSON.parse('{name:"Yuan"}')) ; // 错误 console.log(JSON.parse('[12,undefined]')) ; // 错误 JSON.stringify(): 用于将 JavaScript 值转换为 JSON 字符串。  eg: console.log(JSON.stringify({'name':"egon"})) ;
  • 相关阅读:
    常用MySQL函数连接
    spring boot和mybatis的多源配置亲测可用非常简单哦铁闸门
    RestTemplate请求发送post请求携带数组参数(亲测有效)
    idea配置tomcat
    前后端分离生成手机验证码
    前后端分离的图片验证保存及发送方式
    Java—大文件分片上传
    SpringAOP实战
    Spring Boot AOP的使用
    iOS开发日常记录
  • 原文地址:https://www.cnblogs.com/chvv/p/9631760.html
Copyright © 2020-2023  润新知