I have the following ListView

import json
class CountryListView(ListView):
     model = Country

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

         return json.dumps(self.get_queryset().values_list('code', flat=True))

But I get following error:

[u'ae', u'ag', u'ai', u'al', u'am', 
u'ao', u'ar', u'at', u'au', u'aw', 
u'az', u'ba', u'bb', u'bd', u'be', u'bg', 
u'bh', u'bl', u'bm', u'bn', '...(remaining elements truncated)...'] 
is not JSON serializable

Any ideas ?

推荐答案

It's worth noting that the QuerySet.values_list() method doesn't actually return a list, but an object of type django.db.models.query.ValuesListQuerySet, in order to maintain Django's goal of lazy evaluation, i.e. the DB query required to generate the 'list' isn't actually performed until the object is evaluated.

Somewhat irritatingly, though, this object has a custom __repr__ method which makes it look like a list when printed out, so it's not always obvious that the object isn't really a list.

The exception in the question is caused by the fact that custom objects cannot be serialized in JSON, so you'll have to convert it to a list first, with...

my_list = list(self.get_queryset().values_list('code', flat=True))

...then you can convert it to JSON with...

json_data = json.dumps(my_list)

您还必须将生成的JSON数据放入HttpResponse对象中,该对象为apparently,应该是application/jsonContent-Type,带有...

response = HttpResponse(json_data, content_type='application/json')

.然后可以从您的函数返回.

Json相关问答推荐

当值包含ansible中的字符串时解析json值

使用 Jolt 使用键中的值创建带有硬编码键和值的 JSON 数组

如何使用 ConfigurationBuilder 解析现有的 json 字符串(不是文件)

System.Text.Json 中是否可以进行多态反序列化?

在 pandas DataFrame 中取消嵌套(分解)多个列表列的有效方法

Dart - _InternalLinkedHashMap 如何转换为 Map

是否可以通过适当的 JavaScript 字符串转义来利用 JSON 响应进行 XSS 攻击?

如何在 Flutter 中解码 JSON?

如何比较 JSON 文档并返回与 Jackson 或 Gson 的差异?

将对象转换为可编码对象失败

使用 serde 生成漂亮的(缩进的)JSON

如何将 JSON 文件导入 TypeScript 文件?

JSON Jackson 将不同的键解析到同一个字段中

如何轻松地将 BufferedReader 转换为字符串?

使用 Flask 响应发送 JSON 和状态码

没有从字符串值('')反序列化的字符串参数构造函数/工厂方法

在没有 ASP.NET Core 的情况下将 IConfigurationSection 绑定到复杂对象

在 Webpack 中加载静态 JSON 文件

“现代”浏览器一次可以“处理”多少个 HTML 元素?

Newtonsoft Json 将值 {null} 转换为类型“System.Int32”时出错