如果用HttpResponse一般這樣用是正確的(記得要指明content_type="application/json"):
import json from django.core import serializers json_data = serializers.serialize('json', goods) from django.http import HttpResponse return HttpResponse(json_data, content_type="application/json")
下面這樣寫就可能出現有些類型序列化不了:
import json from django.http import HttpResponse return HttpResponse(json.dumps(json_list), content_type="application/json")
這是因為這個json.dumps不能序列化datetime這樣類型的數據,所以才會用第一種那種serializers.serialize()來對其進行序列化。
當然json.loads就是serializers.serialize()它的逆操作了,逆回來再用json.dumps()也就沒問題了。
JsonResponse做的工作也就是加上了dumps和content_type,要這樣用(轉過去再轉回來,因為自帶dumps沒辦法):
import json from django.core import serializers json_data = serializers.serialize('json', goods) json_data = json.loads(json_data) from django.http import JsonResponse return JsonResponse(json_data, safe=False)