python - Django: "TypeError: [] is not JSON serializable"为什么?

标签 python django json

怎么会引发这个错误?我输入了这个:

def json(self):
    return json.dumps(
        {
            'items': self.items
        }
    )

并得到了那个错误(因为 self.items 是一个空的查询集(Django)

然后,

def json(self):
    return json.dumps(
        {
            'items': []  # Pass in empty list to prove that the error was idiotic.
        }
    )

工作正常(这至少证明错误消息毫无值(value))

这是因为查询集定义了 repr() 并在它为空或类似荒谬的情况下将 '[]' 作为字符串返回?

最佳答案

查询集不是开箱即用的可序列化的。如果您尝试 list(self.items) 而不仅仅是 self.items,只要项目本身是 JSON 可序列化的,那应该可以工作。

更新:即使它不为空也会引发异常。我不认为它会被接受为 Django 错误,尽管您当然可以尝试;正如我已经说过的,最简单的答案是使用 list(qs) 强制评估。

关于python - Django: "TypeError: [] is not JSON serializable"为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2243002/

相关文章:

PHP 为 Google map 生成的 JSON : a tiny mystery

javascript - 在扩展现代 Javascript 项目时,对象数量与有效负载哪个更重要?

python - 如何重载 python 中的内置模块?

python - 在 Solaris 上使用 Python 终止进程时出现问题

python - Django - 将图像添加到 Django 管理中的列表显示

django {% if user.groups == 'FC' %} 不起作用

json - 将 JSON 查询字符串解析为 JSON 对象

python - 如果我已经安装了 PyCharm,还需要安装 Anaconda 吗?如果是的话,他们会合作得很好吗?

python - 为什么 unicode 字符在列表中显示为编码?

django - 获取序列化器中字段的属性(django rest 框架)