Flask:jsonify 列出的生成器

问题描述

我正在使用 Flask 对使用 list() 命令在字典中列出的生成器进行 jsonify,如下所示:

r = {
      "stocks": list(current_user.stocks)
     }

但是当我尝试使用 jsonify(r) 时,我收到以下错误

TypeError:Stocks 类型的对象不是 JSON 可序列化的

在终端中,如果我只是打印出list(current_user.stocks),它会返回我:

[<Stocks GOOGL>,<Stocks TSLA>]

Stocks 是我在flask-sqlalchemy 中使用的表/类。我希望 JSON 看起来像这样:

{"stocks": [<Stocks GOOGL>,<Stocks TSLA>]}

我对 <Stocks GOOGL> 和另一个数组元素是字符串没有问题。

关于如何在 dict 中对此进行 jsonify 的任何想法?提前致谢!

解决方法

您提供的示例不是有效的 JSON。您可以尝试以下操作:

r['stocks'] = list(map(repr,r['stocks']))

然后 jsonify(r) 应该产生类似:

{"stocks": ["<Stocks GOOGL>","<Stocks TSLA>"]} # Note that these are strings