Flask报TypeError: '<'不支持int与str实例比较问题求助
Flask Session序列化时报
int和str无法比较错误排查 根因定位
这个报错是Flask默认JSON序列化逻辑触发的,和你自己写的业务代码无关:
- 你代码中的
__incomes/__expenses/__savings/__investments字典同时存在两类键:一类是固定字符串键"summary",另一类是item.get("id")生成的整数类型键 - Flask默认开启了
JSON_SORT_KEYS = True配置,JSON编码器序列化字典时会自动对所有键做排序来保证输出结果稳定。当字典同时存在整数和字符串类型的键时,排序过程中会触发跨类型比较,直接抛出你遇到的TypeError: '<' not supported between instances of 'int' and 'str'错误。
解决方案
方案1(最推荐):调整字典结构
把汇总字段和业务条目分层存储,避免不同类型的键出现在同一层级:
# 初始化时调整结构,比如__incomes的初始值改成 self.__incomes = { "summary": 0.0, "items": {} } # 对应业务代码修改为 item["incomes"] = float(item.get("incomes")) self.__incomes["items"][item.get("id")] = item self.__incomes["summary"] += item.get("incomes")
该方案不改动框架默认配置,同时数据结构更清晰,后续维护成本最低。
方案2:统一键的类型
把用作键的id统一转为字符串类型,避免跨类型比较:
# 把所有赋值的键都转成字符串 self.__incomes[str(item.get("id"))] = item
该方案改动量小,不需要调整原有数据结构。
方案3:关闭JSON自动排序
在Flask实例配置中关闭键排序逻辑:
app.config['JSON_SORT_KEYS'] = False
该方案改动量最小,但会导致序列化输出的JSON键顺序不稳定,调试和对接前端时可能出现额外问题,不推荐使用。
内容的提问来源于stack exchange,提问作者onii-sama
相关产品推荐
相关产品推荐

