python - 如何在 python 中通过 flask 发送双端队列集合

标签 python flask deque

我正在尝试在一个简单的 Flask 应用程序中通过 Flask 发送一个装满整数的双端队列集合。

我面临的问题是双端队列不可序列化

from flask import Flask, jsonify
import collections


d=collections.deque(maxlen=10)


app=Flask(__name__)
@app.route('/')

def index():
    for i in range(10):
        d.append(i)
    return jsonify(d)

if __name__=='__main__':
    app.run(debug=True)

输出错误为

TypeError: Object of type deque is not JSON serializable

如何序列化要通过 Flask 发送的双端队列集合?考虑到我需要在另一个 python 服务器上通过这个双端队列对发送的整数进行一些数学算法。

最佳答案

您可以创建一个自定义编码器,它知道如何将双端队列转换为 JSON:

from json import JSONEncoder
from collections import deque

class DequeEncoder(JSONEncoder):
    def default(self, obj):
       if isinstance(obj, deque):
          return list(obj)
       return JSONEncoder.default(self, obj)

像这样使用它:

d = deque(("A", "B", "C"))
json.dumps(d, cls=DequeEncoder)

关于python - 如何在 python 中通过 flask 发送双端队列集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56631350/

相关文章:

python - Flask-sqlalchemy 连接到现有数据库

python - 如何在 Jinja2 的方法调用中引用对象属性?

java - 为什么我的迭代器中出现空指针异常?

c++ - 为什么这个Deque析构函数有内存泄漏

python - 使 QGraphisItem 适合 View

Python/flask汇总算法错误

python - 根据选择将功能组织到模块中

java - 为什么我无法从 PriorityQueue 中删除通过 peek() 获取的元素?

python - 如何调试不起作用的 PyInstaller 构建?

python - 如何在一种情况下将数据拆分为 Pandas 中的多行?