python - Django: "TypeError: [] is not JSON serial

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

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/

相关文章:

json - 简单、安全的 API 认证系统

javascript - js 中奇怪的 JSON 解析行为, "Unexpected token

ruby-on-rails - 销毁记录时应该渲染什么?

php - 使用 json_encode() 时删除数组索引引用

java - 可以将 Jackson 配置为从所有字符串属性中修剪前导/尾随空格吗?

json - 应该如何为 RESTful JSON 集合实现 HATEOAS 样式的链接?

javascript - 如何转换为 D3 的 JSON 格式?

asp.net-mvc - 如何从 MVC Controller 返回 Json 对象以查看

jquery - AJAX 将 JavaScript 字符串数组发布到 JsonResult 作为

json - Jackson JSON Marshall 忽略 getter