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

 

相关文章:

  • 2021-05-21
  • 2022-12-23
  • 2021-10-28
  • 2021-11-26
  • 2022-02-20
  • 2022-12-23
  • 2022-12-23
  • 2021-11-13
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-07-18
  • 2021-06-09
  • 2022-12-23
  • 2021-08-08
相关资源
相似解决方案