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

CentOS7.4下requests 2.26.0无法捕获无效JSON异常如何解决?

问题原因

  • 你传入的json={ '' }本身不是合法的字典参数:Python中{ '' }是集合(set)类型,不是键值对结构的字典,JSON标准本身不支持集合类型,序列化时会抛出Python标准库的TypeError,不属于requests自定义的异常范畴,自然不会被requests.exceptions.RequestException捕获。
  • 你使用的requests 2.26.0版本不存在requests.exceptions.InvalidJSONError这个异常类:该异常是requests v2.27.0版本才新增的,专门用于捕获响应内容的JSON反序列化错误,哪怕你升级到对应版本,这个异常也不会捕获请求发送前的JSON序列化错误。
  • 异常捕获顺序错误:就算后续你升级requests版本调整了捕获逻辑,也需要将子类异常的捕获放在父类异常前面,否则RequestException会先捕获所有属于它子类的异常,后面的InvalidJSONError分支永远不会触发。

修复方案

  1. 先修正传入的json参数格式,确认是合法的字典结构,如果确实需要传集合类数据,先转成列表再传入。
  2. 新增对TypeError的捕获,覆盖JSON序列化阶段的异常,参考代码如下:
import requests
...

try:
    # 示例修正为合法字典,可根据实际业务调整参数
    response = requests.post("http://localhost:8000", json={"key": ""})
except requests.exceptions.InvalidJSONError:
    print "Invalid JSON Error."
except requests.exceptions.RequestException as e:
    print e
except TypeError as e:
    print "JSON序列化失败:", e
...
  1. 如果需要持续兼容requests 2.26.0及更旧版本,可以移除InvalidJSONError的捕获,或者在解析接口返回值时手动处理JSON解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:36:03