如何限制Flask接口返回的JSON数据仅为100条?
实现Flask接口返回前100条JSON数据
嘿,这个需求很好实现,咱们只需要对原来的代码做几个小调整——核心思路是先把JSON文件解析成Python对象,截取前100条后再重新序列化为JSON返回。下面是修改后的完整代码:
from flask import Flask from flask import make_response import io import json # 新增:导入JSON处理模块 app = Flask(__name__) @app.route("/cases") def cases(): # 用with语句打开文件,自动处理关闭逻辑,更安全 with io.open("file.json", mode="r", encoding="utf-8") as f: # 将JSON文件内容解析为Python列表(假设你的JSON是数组结构) original_data = json.load(f) # 截取前100条数据,如果总条数不足100则返回全部 limited_data = original_data[:100] # 将截取后的数据重新序列化为JSON字符串,保留非ASCII字符(比如中文) json_str = json.dumps(limited_data, ensure_ascii=False) # 构建响应并设置正确的MIME类型 r = make_response(json_str) r.mimetype = 'application/json' return r
关键修改点说明:
- 导入json模块:原来的代码直接读取文件文本返回,现在需要解析和重新生成JSON,所以必须导入这个模块。
- 用
with语句管理文件:代替直接open,能自动关闭文件句柄,避免资源泄漏问题。 - 解析JSON为Python对象:
json.load(f)把文件里的JSON数组转成Python列表,这样就能用切片操作截取数据。 - 切片截取前100条:
original_data[:100]是Python的切片语法,非常简洁——如果原数据不足100条,会自动返回全部内容,不用额外判断。 - 重新序列化为JSON:
json.dumps(..., ensure_ascii=False)确保返回的JSON里的中文、特殊字符不会被转义成Unicode编码,保持可读性。
特殊情况处理
如果你的file.json不是直接的数组结构,而是嵌套对象(比如{"data": [{"id":1}, ...]}),那只需要调整截取逻辑:
# 假设JSON结构是{"data": [ ... ]} limited_data = {"data": original_data["data"][:100]}
内容的提问来源于stack exchange,提问作者Donald Duck
相关产品推荐
相关产品推荐

