【问题标题】:Python Json Error: ValueError: No JSON object could be decodedPython Json 错误:ValueError:无法解码 JSON 对象
【发布时间】:2023-03-12 19:00:01
【问题描述】:

我在执行此脚本时遇到错误,无法弄清楚。

错误:

Traceback (most recent call last):
  File "./upload.py", line 227, in <module>
    postImage()
  File "./upload.py", line 152, in postImage
    reddit = RedditConnection(redditUsername, redditPassword)
  File "./upload.py", line 68, in __init__
    self.modhash = r.json()['json']['data']['modhash']
  File "/usr/lib/python2.6/site-packages/requests/models.py", line 799, in json
    return json.loads(self.text, **kwargs)
  File "/usr/lib/python2.6/site-packages/simplejson/__init__.py", line 307, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.6/site-packages/simplejson/decoder.py", line 335, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.6/site-packages/simplejson/decoder.py", line 353, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

【问题讨论】:

  • 我找到了那个帖子,但看不到它对我有什么帮助。我打开了验证器,但就我而言,我不知道要粘贴什么。
  • 你能把 JSON 打印到控制台吗?另外,我相信您的代码包含您可能不应该分享的信息... imgurClientId / imgurClientSecret
  • 我可以,如果你能告诉我怎么做,我真的不知道该怎么做。这台机器在 CentOS 7 上。我可以输入你建议的任何内容。待命...谢谢。
  • 正如@Guy3000 提到的,你不应该发布你的api密钥。如果我是你,我可能会马上重置你的钥匙。

标签: python json


【解决方案1】:

你得到这个异常是因为你在这里使用了错误的 json 函数:

def getNumberOfFailures(path):
try:
    with open(path + '.failurecount') as f:
        return json.loads(f.read())
except:
    return 0

您需要这样做:

def getNumberOfFailures(path):
    try:
        with open(path + '.failurecount') as f:
            return json.load(f)
    except:
        return 0

json.loads() 用于 json 字符串。 json.load() 用于 json 文件对象。

正如一些人所提到的,您需要为自己重新颁发一个新的 API 密钥并删除您在代码中发布的那个。其他人可以并且将会滥用这些密钥以您的名义向 Reddit 发送垃圾邮件。

【讨论】:

  • 我用您的更新版本替换了该部分,并编辑了上述总脚本以反映您的更改。我运行它,并且有同样的错误。此外,上面的 API 机密只是随机击键。
猜你喜欢
  • 2015-03-29
  • 1970-01-01
  • 2017-11-17
  • 2015-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
  • 1970-01-01
相关资源
最近更新 更多