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

如何让Python Web脚本接收JSON输入并转为字典?

修改Web脚本接收JSON输入的方案

没问题,咱们来调整你的web.py代码,让它能接收并解析客户端发送的JSON请求体,同时还能兼顾原来的GET参数处理(如果需要的话)。这里是修改后的完整代码:

import os
import sys
import json
from urllib.parse import parse_qsl

def main():
    # 初始化响应内容
    response_content = {}
    
    try:
        # 获取请求方式,区分GET和POST
        request_method = os.environ.get("REQUEST_METHOD", "GET").upper()
        
        if request_method == "GET":
            # 保留原有GET参数处理逻辑
            thestring = os.environ.get("QUERY_STRING", "")
            parameter_dict = dict(parse_qsl(thestring))
            response_content = {"status": "success", "data": parameter_dict}
        elif request_method == "POST":
            # 处理POST类型的JSON请求
            content_length = int(os.environ.get("CONTENT_LENGTH", 0))
            # 从标准输入读取请求体数据
            post_data = sys.stdin.read(content_length)
            # 解析JSON字符串为Python字典
            parameter_dict = json.loads(post_data)
            response_content = {"status": "success", "data": parameter_dict}
        else:
            response_content = {"status": "error", "message": "不支持的请求方式"}
        
    except json.JSONDecodeError:
        response_content = {"status": "error", "message": "JSON格式无效"}
    except Exception as e:
        response_content = {"status": "error", "message": str(e)}
    
    # 返回JSON格式的响应(匹配客户端的解析逻辑)
    print("Content-Type: application/json; charset=utf-8")
    print("")
    print(json.dumps(response_content))

if __name__ == "__main__":
    main()

关键修改点说明:

  • 读取POST请求体:在CGI环境中,POST数据是通过sys.stdin传递的,我们需要先从环境变量CONTENT_LENGTH获取数据的字节长度,再读取对应长度的内容。
  • JSON解析:用json.loads()把读取到的字符串转成Python字典,这样你就能像使用GET参数字典一样直接操作它。
  • 响应格式适配:因为你的客户端代码是用json.loads()解析响应的,所以我们把响应内容也改成JSON格式,同时设置正确的Content-Type头。
  • 异常防护:添加了JSON解析失败和通用异常的捕获,避免脚本崩溃,同时返回友好的错误提示。
  • 兼容原有逻辑:保留了GET参数处理代码,让脚本可以同时支持两种请求方式。

现在运行修改后的web.py,再用你写的客户端代码发送请求,就能得到包含{"username":"user1", "folder":"folder1"}的响应数据了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:34:59