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

  • 相关阅读:
    解释机器学习模型的一些方法(一)——数据可视化
    机器学习模型解释工具-Lime
    Hive SQL 语法学习与实践
    LeetCode 198. 打家劫舍(House Robber)LeetCode 213. 打家劫舍 II(House Robber II)
    LeetCode 148. 排序链表(Sort List)
    LeetCode 18. 四数之和(4Sum)
    LeetCode 12. 整数转罗马数字(Integer to Roman)
    LeetCode 31. 下一个排列(Next Permutation)
    LeetCode 168. Excel表列名称(Excel Sheet Column Title)
    论FPGA建模,与面向对象编程的相似性
  • 原文地址:https://www.cnblogs.com/Ailewent/p/14290183.html
Copyright © 2011-2022 走看看