You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3+JSON分页获取商家评论失败问题求助

问题分析与修复

核心错误点

你评论分页代码里的列表推导式写法有误:

reviews_list = [{k, v} for k, v in businesses[b_id]["reviews"].items()]

这里用{k, v}创建的是集合,而JSON序列化器无法处理集合类型,这就是添加评论后报错的直接原因。正确写法应该是用{k: v}创建字典,和商家列表的处理逻辑保持一致。

额外的健壮性优化

还需要补充两种边界情况的处理,避免出现KeyError:

  • 请求的商家ID不存在
  • 商家存在但尚未创建评论字段(比如新商家还没收到任何评论)

修复后的完整代码

@app.route("/api/v1.0/businesses/<string:b_id>/reviews", methods = ["GET"])
def fetch_all_reviews(b_id):
    page_num, page_size = 1, 10
    if request.args.get("pn"):
        page_num = int(request.args.get("pn"))
    if request.args.get("ps"):
        page_size = int(request.args.get("ps"))
    page_start = (page_size * (page_num - 1))
    
    # 检查商家是否存在
    if b_id not in businesses:
        return make_response(jsonify({"error": "商家不存在"}), 404)
    
    # 确保reviews字段存在,默认返回空字典
    reviews = businesses[b_id].get("reviews", {})
    reviews_list = [{k : v} for k, v in reviews.items()]
    data_to_return = reviews_list[page_start:page_start + page_size]
    
    return make_response(jsonify(data_to_return), 200)

修复说明

  1. 将{k, v}改为{k: v},确保生成可被JSON序列化的字典对象
  2. 添加商家存在性检查,返回404错误提示
  3. 用get方法获取reviews字段,避免商家无评论时触发KeyError

修改后,分页功能可正常工作:有评论时返回分页后的评论列表,无评论时返回空列表,商家不存在时返回明确的错误信息。

内容的提问来源于stack exchange,提问作者a_bow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 22:15:29