如果用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)