Javascript Can';t解析用Python/Django创建的客户端JSON对象

Javascript Can';t解析用Python/Django创建的客户端JSON对象,javascript,python,json,django,ajax,Javascript,Python,Json,Django,Ajax,我使用JSON格式的AJAX将一个数据对象从Python/Django应用程序传递到前端。一切都正常工作,只是我无法在Javascript中一次性解析JSON对象。我一直没有定义。我已经尝试了我能想到的每一种方法,我被深深地困住了,所以我想看看是否有人能指出我希望的是一个超级简单的疏忽 Python/Django的代码片段: data = serializers.serialize('json', products) response = {'product_data': data,

我使用JSON格式的AJAX将一个数据对象从Python/Django应用程序传递到前端。一切都正常工作,只是我无法在Javascript中一次性解析JSON对象。我一直没有定义。我已经尝试了我能想到的每一种方法,我被深深地困住了,所以我想看看是否有人能指出我希望的是一个超级简单的疏忽

Python/Django的代码片段:

data = serializers.serialize('json', products)


  response = {'product_data': data,
              'product_count': product_count}
  return HttpResponse(json.dumps(response), content_type='application/json')
AJAX回调代码片段:

.done(function(data){

  console.log(data.product_count)
  console.log(data.product_data)
  console.log(data.product_data["model"])
  console.log(data.product_data[0])
  console.log(data.product_data[0]["model"])

})
控制台日志响应代码段:

>1
>[{"model": "seller.product", "pk": 11048, "fields": {"seller": 132, "width": 211, "height": 3, "length": 350, "weight": 18600, "price": 11077, "color_id": null, "po_number": null, "po_sub_number": null, "custom_order_id": null, "active_at": "2019-08-02T01:27:23.410Z", "deactive_at": null, "in_holding": false, "approved_at": "2019-08-04T15:34:08.318Z", "sold_at": "2020-02-07T20:07:54.675Z", "slug": "colored-beni-ourain-rug", "created_at": "2019-08-02T01:23:51.650Z", "updated_at": "2020-02-07T20:07:54.675Z", "assets": [3567, 3581, 3585, 3572, 3573, 3574, 3577, 3582, 3583, 3584, 3586, 3587, 3589, 3594, 3596], "colors": [1, 2, 3, 4, 12], "shipping_options": [1]}}]
> undefined
> [
> undefined

第一个控制台日志1是正确的,在第二行中,我想要的数据都在那里。但是,每当我试图从中获取信息时,我都会得到未定义或a],我无法理解。有人能帮忙吗?谢谢大家!

我认为您首先需要
JSON.parse(data.product\u data)

如果要多次序列化数据,只需将
产品
放入
响应
,而不必序列化

  response = {'product_data': products,
              'product_count': product_count}
  return HttpResponse(json.dumps(response), content_type='application/json')

使用JSONResponse而不是HttpResponse。 这样你就不需要处理中间的任何事情

return JSONResponse(products)
:)


“json.dumps”就足够了,不需要再次调用序列化程序

不幸的是,没有运气。解析只是返回空白数组。谢谢您的回答。这就是我最初使用它的方式,但得到了以下回溯:TypeError:ProductQuerySet类型的对象不是JSON serializable这很有趣,
ProductQuerySet不是JSON serializable
,而是
序列化器。serialize
可以序列化它…JSONResponse本身不起作用。但添加了带有JsonResponse的序列化程序。现在都在工作。非常感谢。很高兴它成功了。tho、all、json.dump、serializer和jsonresponse对对象使用序列化。因此,idk实际上为您改变了什么:D似乎您有一个无法由标准序列化程序序列化的对象,并且被转换了两次。如果没有实际的模型,很难猜测发生了什么嘿,muzzletov,我想你(或其他任何人)可能想知道,模型中的问题是模型中有一个查询集。通过使用以下帖子,我能够开发出更好的解决方案,我认为这是一个比我的问题更好的问题: