加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – ValueError:没有JSON对象可以解码,但是正面

发布时间:2020-12-20 11:26:34 所属栏目:Python 来源:网络整理
导读:我正在浏览一些URL,我可以从我正在使用的API中获取大部分数据. * Imgur API.然而,当它找到之前已经发布但最终被删除的图像时,它仍然显示正向URL获取响应(代码200),当我使用时 j1 = json.loads(r_positive.text) 我收到此错误: http://imgur.com/gallery/cJP
我正在浏览一些URL,我可以从我正在使用的API中获取大部分数据. * Imgur API.然而,当它找到之前已经发布但最终被删除的图像时,它仍然显示正向URL获取响应(代码200),当我使用时

j1 = json.loads(r_positive.text)

我收到此错误:

http://imgur.com/gallery/cJPSzbu.json
<Response [200]>
Traceback (most recent call last):
  File "image_poller_multiple.py",line 61,in <module>
    j1 = json.loads(r_positive.text)
  File "/usr/lib/python2.7/json/__init__.py",line 326,in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py",line 366,in decode
    obj,end = self.raw_decode(s,idx=_w(s,0).end())
  File "/usr/lib/python2.7/json/decoder.py",line 384,in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

我怎样才能“获取”j1变量中的错误呢?我想使用条件结构来解决问题并避免我的程序崩溃.就像是

if j1 == ValueError:
  continue
else:
  do_next_procedures()

解决方法

您需要使用try,而不是:

try:
    j1 = json.loads(r_positive.text)
except ValueError:
    # decoding failed
    continue
else:
    do_next_procedures()

请参阅Python教程中的Handling Exceptions.

真正发生的是您被重定向到该URL并且您获得了图像页面.如果您正在使用请求来获取JSON,请查看the response history:

if r_positive.history:
    # more than one request,we were redirected:
    continue
else:
    j1 = r_positive.json()

或者你甚至可以禁止重定向:

r = requests.post(url,allow_redirects=False)
if r.status == 200:
    j1 = r.json()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读