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)
修复说明
- 将
{k, v}改为{k: v},确保生成可被JSON序列化的字典对象 - 添加商家存在性检查,返回404错误提示
- 用
get方法获取reviews字段,避免商家无评论时触发KeyError
修改后,分页功能可正常工作:有评论时返回分页后的评论列表,无评论时返回空列表,商家不存在时返回明确的错误信息。
内容的提问来源于stack exchange,提问作者a_bow
相关产品推荐
相关产品推荐

