Python 是否可以使用ijson在内存中创建和加载JSON对象(而不是从/到文件)?

Python 是否可以使用ijson在内存中创建和加载JSON对象(而不是从/到文件)?,python,ijson,Python,Ijson,我正在尝试使用ijson而不是json,以便能够高效地将字典转储到字符串中或从字符串中加载字典(在内存中,而不是从文件中)[1] ijson是否有类似于使用json的标准转储/加载的示例?我所看到的所有使用ijson的源代码都只有文件示例 [1] --字典正在转换为字符串,以便将它们存储在一个集合中您可以同时实现这两个目标(dict-to-string和string-to-dict,无需使用json库) 让我们看看上面的例子: import ast di = {"a":2, "b": 3} p

我正在尝试使用
ijson
而不是
json
,以便能够高效地将字典转储到字符串中或从字符串中加载字典(在内存中,而不是从文件中)[1]

ijson
是否有类似于使用
json
的标准转储/加载的示例?我所看到的所有使用ijson的源代码都只有文件示例

[1] --字典正在转换为字符串,以便将它们存储在一个集合中

您可以同时实现这两个目标(dict-to-string和string-to-dict,无需使用json库)

让我们看看上面的例子:

import ast
di = {"a":2, "b": 3}

print (str(di))
>>> "{'a': 2, 'b': 3}"

print (type(str(di)))
>>> <class 'str'>

print (ast.literal_eval(str(di)))
>>> {'a': 2, 'b': 3}

print (type(ast.literal_eval(str(di))))
>>> <class 'dict'>

为了补充omri_saadon在绩效方面的回答

下面是一个链接(),它测量一些鲜为人知的JSON模块,其中一个模块的性能优于其他模块(
msgpack
),可以与
JSON
互换使用

因此,dict/str转换目前使用的不是
ijson
或标准
json
,而是
msgpack

要安装:
pip安装msgpack

使用:
将msgpack作为json导入
#可以使用转储/加载函数

我以前考虑过eval,但我注意到它与性能差有关。我认为ijson是一个好方法的原因是它的效率。然而,相对于标准json,它的效率很高,所以我不知道它与eval相比如何。阅读本文以了解更多信息。我可以说得更清楚。所谓效率,我指的是速度。如果您对dict/str转换的最快速有效的方法有什么想法,请告诉我。@Phillip,请阅读此文,以了解为什么使用json比使用literal快得多_eval@Phillip,我已经在我的答案中添加了一个编辑部分,但所有内容仍在记忆中。祝你好运截至已重命名为,并已弃用。另一个基准:
import json
di = {"a":2, "b": 3}

print (json.dumps(di))
>>> '{"a": 2, "b": 3}'

print (type(json.dumps(di)))
>>> <class 'str'>

print (json.loads(json.dumps(di)))
>>> {'a': 2, 'b': 3}

print (type(json.loads(json.dumps(di))))
>>> <class 'dict'>