无法导入JSONDecodeError

30 投票
4 回答
59239 浏览
提问于 2025-04-17 17:39

我正在尝试进行以下调用:

from simplejson import JSONDecodeError

但是我遇到了这个错误:

from simplejson import JSONDecodeError
ImportError: cannot import name JSONDecodeError

以下信息可能对你有帮助:

  • 这段代码在ubuntu上运行得很好,但在mac上却出现了这个错误。

  • 我有多个版本的python,刚刚删除了python 2.6(因为我在使用python 2.7)。

  • 然后我使用了easy_install_27来安装这个特定的库。

4 个回答

3

升级你的安装:

$ pip install -U simplejson
$ python
>>> from simplejson import JSONDecodeError
30

为了更清楚地说明@tim的评论,在Python 3中,你只需要写

from json import JSONDecodeError

这样就可以了,不需要使用simplejson这个包。

34

你已经知道如何得到 JSONDecodeError 的答案,但我觉得正确的建议是你不应该尝试去导入它。

原因是 JSONDecodeError 只在 simplejson 中出现,除非你的 Python 版本非常老旧,否则其实没有必要使用它。最近版本的内置 json 速度一样快,而且没有 unicode 的问题。更多信息可以查看这个链接: https://stackoverflow.com/a/16131316/723090

解决办法是:json 会抛出一个 ValueError,而不是 JSONDecodeError,但 JSONDecodeError(由 simplejson 抛出)其实是 ValueError 的一个子类。所以你只需要捕获一个 ValueError,这样就可以同时适用于 jsonsimplejson 了!

撰写回答