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

Python grequests异步POST请求获取JSON数据出现下标错误怎么办?

问题解决:grequests异步POST请求无法获取JSON数据

错误原因分析

  1. JSON调用方式错误
    你遇到的'builtin_function_or_method' object is not subscriptable错误,是因为r.json是一个方法而非字典属性,必须通过r.json()调用它才能得到解析后的JSON字典,之后才能通过键取值。

  2. grequests异步请求未正确执行
    grequests和原生requests的用法不同:grequests.post()返回的是一个待执行的请求对象,并没有实际发送请求。必须通过grequests.send()或grequests.map()触发请求执行,才能拿到真实的响应对象。

修正后的代码

import grequests

# 替换为你的实际请求头
headers = {
    "Content-Type": "application/json"
}

# 替换为你的实际请求数据
data = {
    "example_key": "example_value"
}

# 创建异步POST请求对象
# 若为JSON格式数据,建议用json参数替代data,自动处理Content-Type
req = grequests.post("your_real_api_url", headers=headers, json=data)

# 发送请求并获取响应
# 单请求用send,多请求可改用grequests.map([req1, req2...])
response = grequests.send(req, grequests.Pool(1))[0]

# 解析JSON并提取目标值
if response.status_code == 200:
    json_result = response.json()
    var = json_result["SOME VALUE"]
    print(var)
else:
    print(f"请求失败,状态码: {response.status_code}")

补充说明

  • 如果需要批量发送异步请求,使用grequests.map()方法更高效,它会返回所有请求的响应列表。
  • 若你的请求是表单格式(application/x-www-form-urlencoded),保留data=data参数即可;JSON格式优先用json=data,无需手动设置Content-Type。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:30:49