JSON响应不是普通对象

JSON response not a plain object

本文关键字:对象 响应 JSON      更新时间:2023-09-26

这是一个获取Django应用程序的所有对象的请求,它不是获取一个普通对象,因为打印显示它只是一个字符串

Javascript:

  $.getJSON("/cadastro/getAllPessoas/", function(data){
    console.log(data);
    console.log(typeof(data));
    console.log($.isPlainObject(data));
    //Raises error on isArrayLike():
    $.each(data,function(){
      arrayValues.push([this["pk"],this["fields"]["nome"]]);
    })
  });

控制台输出:

[{"model": "cadastroapp.djangotestpessoa", "pk": 1, "fields": {"nome": "Gabriel"}}] 
string
false

views.py:

from django.core import serializers
def getAllPessoas(request):
    data = serializers.serialize('json', Pessoa.objects.all(), fields=('objectid','nome'))
    return JsonResponse(data, safe=False)

您在Django视图中序列化了两次,因为serializers.serialize和JsonResponse都转换为JSON。不要那样做;只返回一个带有序列化值的正常响应。

return HttpResponse(data, content_type='application/json')