class LoginView(View):
def get(self,request):
出错
publish_list = Publisher.objects.all()
return HttpResponse(json.dumps(publish_list))#无法打印,返回值是一个querset对象
#c出错
publish_list = list(Publisher.objects.all())
return HttpResponse(json.dumps(publish_list)) # 无法打印,返回值是一个querset对象
第一种打印全部
publish_list = list(Publisher.objects.all().values())
return HttpResponse(json.dumps(publish_list)) #json.dumps()函数是将字典转化为字符串
第二种打印指定的name和email
publish_list = list(Publisher.objects.all().values("name","email"))
return HttpResponse(json.dumps(publish_list))
第三种
publish_list = Publisher.objects.all()
temp = []
for publish in publish_list:
temp.append({
"name":publish.name,
"email":publish.email}
)
return HttpResponse(json.dumps(temp))
第四种
from django.forms.models import model_to_dict
publish_list = Publisher.objects.all()
temp = []
for publish in publish_list:
temp.append(model_to_dict(publish))
return HttpResponse(json.dumps(temp)) #如果用HttpResponse(json.dumps(temp))这个返回给前端的是一个json字符串,如果要用需转换成JSON对象,前端需要json.parse()
第五种
from django.core import serializers
publish_list = Publisher.objects.all()
ret = serializers.serialize("json",publish_list) #转化成json字符串
return HttpResponse(ret)
def json_test(request):
data = {"name": "小黑", "age": 18}
data2 = [11, 22, 33, 44]
# import json
# data_str = json.dumps(data2) # 把data字典,data2列表序列化成json格式的字符串
# return HttpResponse(data_str)
#如果用HttpResponse(json.dumps(temp))这个返回给前端的是一个json字符串,如果要用需转换成JSON对象,前端需要json.parse()
只要前端发送的是Ajax请求,后端返回给前端的数据最好是字典形式的,这样变成JSON对象的话,前端就可以像字典一样操作
#JsonResponse中有contype application/json,返回给前端的是一个object对象,不用再转换,前端直接可以使用
from django.http import JsonResponse
return JsonResponse(data2, safe=False) #JsonResponse中有contype application/json,返回给前端的是一个object对象,不用再转换,直接可以使用
return JsonResponse(data2, safe=False) #JsonResponse只能序列化字典格式的,要想序列化列表,需加safe=False
import json
s = '{"name":"xiaohei","age": 18}'
# 把字符串反序列化成Python中的数据类型
ret = json.loads(s)
print(ret, type(ret)) #{'name': 'xiaohei', 'age': 18} <class 'dict'>
# 把字典序列化成JSON字符串
ret2 = json.dumps(ret)
print(ret2, type(ret2)) #{"name": "xiaohei", "age": 18} <class 'str'>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
{#JSON字符串#}
{#JSON.parse(): 用于将一个 JSON 字符串或者后端传来的JSON字符串转换为 JavaScript 对象,这样就可以像字典一样操作#}
var s = '{"name":"jack"}';
var data = JSON.parse(s);
console.log(data);
{#object类型#}
console.log(typeof data);
console.log(data.name); #
{#像字典一样操作得到的值为jack#}
</script>
</head>
<body>
</body>
</html>
JSON.parse(): 用于将一个 JSON 字符串或者后端传来的JSON字符串转换为 JavaScript 对象
console.log(JSON.parse('{"name":"Yuan"}')); console.log(JSON.parse('{name:"Yuan"}')) ; // 错误 console.log(JSON.parse('[12,undefined]')) ; // 错误 JSON.stringify(): 用于将 JavaScript 值转换为 JSON 字符串。 eg: console.log(JSON.stringify({'name':"egon"})) ;