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

原文地址:https://www.cnblogs.com/Ailewent/p/14290183.html