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
来源: http://www.bubuko.com/infodetail-3717127.html