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