How can this be that this error was raised? I entered this:

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

and got that error (because self.items was an empty queryset (Django)

但是,

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

worked fine (which at least proves that the error message is worthless)

Is this because the queryset defines repr() and returns '[]' as a string when it's empty or something ridiculous like that?

推荐答案

Querysets are not serializable out-of-the-box. If you try list(self.items) instead of just self.items, that should work as long as the items themselves are JSON-serializable.

Update:即使它不是空的,也会引发异常.我不认为它会被接受为Django bug,尽管你当然可以try ;最简单的答案是使用list(qs)强制判断,正如我已经说过的.

Json相关问答推荐

Jolt Transformation—如果子对象为空,则将父对象更新为空

Vega-Lite:文本笔画在外部

我可以使用JQ来缩小数组中的json对象的范围吗?

对面的行/列进行排序时可能出现错误

在linux控制台中解析json字符串的最简单方法是什么?

交换键和数组值,将旧键转换为新数组值,使用 jq

如何将一个对象添加到多个对象中 JOLT

使用不同行数的数据创建嵌套Jolt

带有 API 测试的 Typescript JSON 模式验证

jq json - 按键名 Select

如何通过 jolt 将一个对象中的键和值添加到数组中的每个对象中

我需要在 mongodb compass 中检索索引(编号 1)信息

如何使用 boost::json::value 调用无参数函数

Angular 2/Web Api - json 解析错误语法错误意外结束输入

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

如何使用 Swift 从 NSURLSession 获取 cookie?

错误未判断调用put(K, V)作为原始类型java.util.HashMap的成员

如何使用 SwiftyJSON 将字符串转换为 JSON

在浏览器中查看 JSON 文件

Backbone.js 模型与集合