我见过许多项目使用simplejson模块而不是标准库中的json模块。此外,还有许多不同的simplejson模块。为什么要使用这些替代品,而不是标准库中的替代品?


当前回答

所有这些答案都不是很有用,因为它们对时间很敏感。

在我自己做了一些研究之后,我发现simplejson确实比内置更快,如果你把它更新到最新版本的话。

pip/easy_install想在ubuntu 12.04上安装2.3.2,但在发现最新的simplejson版本实际上是3.3.0之后,所以我更新了它并重新运行时间测试。

Simplejson在加载时比内置json快3倍 Simplejson在转储时比内置json快30%左右

免责声明:

上面的语句在python-2.7.3和simplejson 3.3.0中(带有c加速) 为了确保我的答案也不是时间敏感的,你应该运行自己的测试来检查,因为它在不同版本之间有很大的差异;没有时间紧迫的简单答案。

如何判断simplejson中是否启用了C加速:

import simplejson
# If this is True, then c speedups are enabled.
print bool(getattr(simplejson, '_speedups', False))

更新:我最近发现了一个名为ujson的库,它在一些基本测试中执行的速度比simplejson快~3倍。

其他回答

我在寻找为Python 2.6安装simplejson时遇到了这个问题。我需要使用json.load()的'object_pairs_hook',以便将json文件加载为OrderedDict。由于熟悉Python的最新版本,我没有意识到Python 2.6的json模块不包括'object_pairs_hook',所以我不得不为此安装simplejson。从个人经验来看,这就是为什么我使用simplejson而不是标准json模块。

下面是Python json库的比较(现在已经过时了):

比较Python的JSON模块(存档链接)

不管这个比较的结果如何,如果你使用的是Python 2.6,你应该使用标准库json。和. .否则还不如直接使用simplejson。

Json是simplejson,添加到stdlib中。但由于json是在2.6中添加的,因此simplejson具有在更多Python版本(2.4+)上工作的优势。

simplejson的更新频率也高于Python,因此如果您需要(或想要)最新版本,最好尽可能使用simplejson本身。

在我看来,一个好的做法是使用其中一种作为后备。

try:
    import simplejson as json
except ImportError:
    import json

所有这些答案都不是很有用,因为它们对时间很敏感。

在我自己做了一些研究之后,我发现simplejson确实比内置更快,如果你把它更新到最新版本的话。

pip/easy_install想在ubuntu 12.04上安装2.3.2,但在发现最新的simplejson版本实际上是3.3.0之后,所以我更新了它并重新运行时间测试。

Simplejson在加载时比内置json快3倍 Simplejson在转储时比内置json快30%左右

免责声明:

上面的语句在python-2.7.3和simplejson 3.3.0中(带有c加速) 为了确保我的答案也不是时间敏感的,你应该运行自己的测试来检查,因为它在不同版本之间有很大的差异;没有时间紧迫的简单答案。

如何判断simplejson中是否启用了C加速:

import simplejson
# If this is True, then c speedups are enabled.
print bool(getattr(simplejson, '_speedups', False))

更新:我最近发现了一个名为ujson的库,它在一些基本测试中执行的速度比simplejson快~3倍。

在python3中,如果你有一个b'bytes'的字符串,使用json你必须在加载它之前解码()内容。Simplejson会处理这个问题,所以你可以只做Simplejson .loads(byte_string)。