zoukankan      html  css  js  c++  java
  • Json与Django

    1.json是什么?
    	JSON是一种与语言无关、轻量级的数据交换的格式
    2.json的特点是什么?
    	JSON 是JavaScript 对象表示法(JavaScript Object Notation)。
    	JSON 是存储和交换文本信息的语法。类似 XML。
    	JSON 比 XML 更小、更快,更易解析。
    	
    3.使用Json的格式与解析方便的可以表示一个对象信息:使用中,json有以下三种结构:
                        对象:{"name":"Michael","age":24}
                        数组:[{"name":"Michael","age":24},{"name":"Tom","age":25}]
                        值:{"name":"Michael", "birthday":{"month":8,"day":26}},类似于对象嵌套对象.
    
               对象格式和数组格式可以互相嵌套,一个对象中的一个属性可以是一个集合或数组。
               大括号{}用来描述一组“不同类型的无序键值对集合”(每个键值对可以理解为OOP(面向对象)的属性描述),方括号[]用来描述一组“相同类型的有序数据集合”(可对应OOP的数组)
    	
    4.django返回json数据格式的方式有:Httprespone,Jasonerespones
    
    from django.shortcuts import HttpResponse
    from django.http import JsonResponse
    from django.core import serializers
    from app01.models import Person
    import json
    
    
    def getPerson1(request):
        """用HttpResponse,把字典以json格式传回"""
        if request.method == "GET":
            res = {"status": "错误", "data": "1th", "city": "杭州"}
    	# return HttpResponse(json.dumps(res, ensure_ascii=False)) # 少了content_type,默认application/text
    	return HttpResponse(json.dumps(res, ensure_ascii=False), content_type="application/json,charset=utf-8")
    
    
    def getPerson2(request):
        """用JsonResponse,把字典以json格式传回"""
        if request.method == "GET":
            res = {"status": "错误", "data": "1th", "city": "杭州"}
            # return JsonResponse(res) # 这样中文会乱码
            return JsonResponse(res, json_dumps_params={'ensure_ascii': False})
    
    
    def getPerson3(request):
        """用HttpResponse,serialize序列化对象,把对象以json格式传回"""
        if request.method == "GET":
            res = serializers.serialize("json", Person.objects.all())  # 把所有Person对象序列化
            return HttpResponse(json.dumps(json.loads(res), ensure_ascii=False), content_type="application/json,charset=utf-8")
    
    
    def getPerson4(request):
        """用JsonResponse,serialize序列化对象,把对象以json格式传回"""
        if request.method == "GET":
            res = serializers.serialize("json", Person.objects.all())  # 把所有Person对象序列化
            res = json.loads(res)  # 把字符串转成json格式
            return JsonResponse(res, json_dumps_params={'ensure_ascii': False}, safe=False)
    
    def setPerson(request):
        if request.method == "POST":
            data = json.loads(request.body)  # 转成字典
            Person.objects.create(name=data["name"], age=data["age"])
            # 方式一: JsonResponse返回
           return JsonResponse({"status": 200, "message": "成功"}, json_dumps_params={'ensure_ascii': False}, safe=False)
            # 方式二: HttpResponse返回
            return HttpResponse(json.dumps({"status": 200, "message": "成功"}, ensure_ascii=False), content_type="application/json,charset=utf-8")
    

    代码来自于:wangsl1204
    https://www.cnblogs.com/wangsl1204/p/12655597.html

  • 相关阅读:
    vue登录注册及token验证
    react实现登录注册
    React Native仿京东客户端实现(首页 分类 发现 购物车 我的)五个Tab导航页面
    进度条效果
    手风琴切换效果
    React实现了一个鼠标移入的菜单栏效果
    react购物车
    react实现tab切换效果
    网络缓存
    java线程面试手写题
  • 原文地址:https://www.cnblogs.com/Ailewent/p/14290183.html
Copyright © 2011-2022 走看看