当前位置: 首页 > 知识库问答 >
问题:

<Django对象>不可JSON序列化

湛文乐
2023-03-14

我有以下用于序列化查询集的代码:

def render_to_response(self, context, **response_kwargs):

    return HttpResponse(json.simplejson.dumps(list(self.get_queryset())),
                        mimetype="application/json")

下面是我的get_quersety()

[{'product': <Product: hederello ()>, u'_id': u'9802', u'_source': {u'code': u'23981', u'facilities': [{u'facility': {u'name': {u'fr': u'G\xe9n\xe9ral', u'en': u'General'}, u'value': {u'fr': [u'bar', u'r\xe9ception ouverte 24h/24', u'chambres non-fumeurs', u'chambres familiales',.........]}]

我需要将其序列化。但它说无法序列化


共有3个答案

呼延晋
2023-03-14

我发现使用“.values”方法可以非常简单地完成这项工作,该方法还提供了命名字段:

result_list = list(my_queryset.values('first_named_field', 'second_named_field'))
return HttpResponse(json.dumps(result_list))

必须使用“list”来获取可迭代的数据,因为“value queryset”类型只有在作为可迭代对象拾取时才是判决。

文档:https://docs.djangoproject.com/en/1.7/ref/models/querysets/#values

谢俊英
2023-03-14

最简单的方法是使用JsonResponse。

对于查询集,应传递该查询集的值的列表,如下所示:

from django.http import JsonResponse

queryset = YourModel.objects.filter(some__filter="some value").values()
return JsonResponse({"models_to_return": list(queryset)})
嵇财
2023-03-14
匿名用户

< code>simplejson和< code>json不能很好地处理django对象。

Django 的内置序列化程序只能序列化填充了 django 对象的查询集:

data = serializers.serialize('json', self.get_queryset())
return HttpResponse(data, content_type="application/json")

在您的情况下,self。get_queryset()包含django对象和dict的混合。

一种选择是删除self.get_queryset()中的模型实例,并使用model_to_dict将它们替换为dicts:

from django.forms.models import model_to_dict

data = self.get_queryset()

for item in data:
   item['product'] = model_to_dict(item['product'])

return HttpResponse(json.simplejson.dumps(data), mimetype="application/json")

希望有所帮助。

 类似资料:
  • 我使用的是 DJango 1.8 和蟒蛇 3.4 当运行下面的视图时,Django抛出类型错误-对象不可JSON序列化 Views.py 我试图从mysql数据库中读取几行数据并显示在html文件中,当上面的视图运行时,我看到下面的错误信息 在HTML页面中,我有一个下拉列表。根据选择的选项,我的Ajax将返回从mysql表获取的记录。 Models.py GreenStats和YellowSta

  • 问题内容: 我有一个django应用程序,该应用程序在版本上运行且工作正常,但是最近我将其更新为django,并遇到了一些如下所示的错误 实际上,我是在用户/客户端注册过程中通过网站功能获取此信息的 追溯 我对为什么更新后出现上述json错误感到困惑,顺便说一句,我在下面的某些模型中使用自定义的json字段 proj / utils.py settings.py json_serializer.p

  • 我想以 json 格式序列化一个自定义对象,其中 entryData 是我的域对象的列表。像这样: 下面是我在一次尝试中为获得json输出所做的工作: 但结果是entryData评估为字符串,引号转义: 我也尝试过这样做: 但是我得到了这个例外:

  • 问题内容: 当我尝试运行以下代码时: 我得到以下异常: 如何成功使用包含s的对象? 问题答案: 在序列化之前将集合变成列表,或使用自定义处理程序来这样做:

  • 我有一个看起来很常见的问题,但到目前为止,我还没有找到一个适合我的解决方案。我想我只是错过了一些小事情,但我已经崩溃了,请求帮助。我正在尝试使用flask和pymongo获得json输出。 以下是控制台中使用print(结果)的对象: 当我试图返回时,我得到了错误: TypeError: ObjectId类型的对象不是JSON可序列化的 类联系人(资源): 我试过bson。json_util建议。

  • 我正在尝试将文件从mongoDB读取到本地。 我的代码如下:STRING=“myLocalPath”PATH=STRING.json 我得到错误-对象类型'ObjectId'是不是JSON序列化...请建议。