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

如何在Flask中从请求加载JSON文件并读取参数?

Flask后端加载上传的JSON文件并获取参数的解决方法

我来帮你搞定这个问题~你之前的代码之所以拿不到JSON内容,核心问题是没有正确处理上传的文件对象:request.files['data']返回的是Flask的FileStorage对象,不是JSON字符串,直接传给json.loads()肯定会出错。

正确处理上传JSON文件的代码

下面是修复后的完整代码,包含错误处理,更健壮:

from flask import Flask, request
import json

app = Flask(__name__)

@app.route('/process', methods=['GET', 'POST'])
def post_data():
    if request.method == "POST":
        # 第一步:检查是否存在上传的文件
        if 'data' not in request.files:
            return "未上传任何文件", 400
        
        file_obj = request.files['data']
        # 第二步:检查文件名是否为空(用户可能没选文件就提交)
        if file_obj.filename == '':
            return "未选择要上传的文件", 400
        
        # 第三步:读取文件内容并解析JSON
        try:
            # 读取文件字节内容,解码为UTF-8字符串
            file_content = file_obj.read().decode('utf-8')
            posted_data = json.loads(file_content)
            
            # 获取JSON中的参数
            number = posted_data.get('number')
            weather = posted_data.get('weather')
            print(f"获取到的参数:number={number}, weather={weather}")
            
            return "处理成功", 200
        except json.JSONDecodeError:
            return "上传的文件不是有效的JSON格式", 400
        except Exception as e:
            return f"处理出错:{str(e)}", 500
    # GET请求返回提示
    return "请使用POST方法上传JSON文件", 405

关键步骤说明

  • 先校验文件是否存在、是否被正确选择,避免空文件或无文件的异常
  • 必须通过file_obj.read()读取文件的字节内容,再解码为字符串,才能传给json.loads()解析
  • 用try-except捕获JSON解析错误和其他异常,让接口返回更清晰的错误信息

补充:如果客户端直接发送JSON请求体(不是上传文件)

如果你的前端是把JSON数据放在请求体里(Content-Type设为application/json),而不是上传文件,代码可以更简洁:

@app.route('/process', methods=['POST'])
def post_data():
    try:
        posted_data = request.get_json()
        if not posted_data:
            return "未接收到JSON数据", 400
        
        number = posted_data.get('number')
        weather = posted_data.get('weather')
        print(f"获取到的参数:number={number}, weather={weather}")
        
        return "处理成功", 200
    except Exception as e:
        return f"处理出错:{str(e)}", 500

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 13:02:39