0

我正在尝试使用 simplejson 库,但我认为我的安装出了点问题。它适用于某些功能,例如我用 simplejson.dumps 尝试过它,它工作正常,但是当我尝试 simplejson.loads 时出现错误。我不确定这是否是唯一有问题的问题,但这是我遇到的唯一问题。我正在使用一个看起来像的简单脚本进行测试

import simplejson

json_data = {"name": "Jane", "age": 17}
data = simplejson.loads(json_data)

print(type(json_data))
print(type(data))

print(data) 

这是我得到的错误

Traceback (most recent call last):

  File "dummy.py", line 4, in <module>

    data = simplejson.loads(json_data)

  File "C:\apps\python25\lib\site-packages\PIL\__init__.py", line 302, in loads



  File "build\bdist.win32\egg\simplejson\decoder.py", line 314, in decode

TypeError: expected string or buffer

我用 py setup.py install 安装。

Installed c:\apps\python25\lib\site-packages\simplejson-2.0.4-py2.5.egg

Processing dependencies for simplejson==2.0.4

Finished processing dependencies for simplejson==2.0.4

***************************************************************************

WARNING: The C extension could not be compiled, speedups are not enabled.

Plain-Python installation succeeded.

***************************************************************************

我已经重新安装了它,但它没有工作。

我仅限于使用这个特定的包和 python 2.5。

4

1 回答 1

0

您的设置似乎没有任何问题,错误在您的代码中。
SimpleJSON 遵循与标准 json 模块相同的接口。

来自以下文档simplejson.loads

将 s(包含 JSON 文档的 str 或 unicode 实例)反序列化为 Python 对象。

你的异常信息是:

TypeError:预期的字符串或缓冲区

这是因为您提供的是对象,而不是对象的字符串表示形式。您已经有了结果,无需调用该函数。
一个 json 库在文本和对象之间进行转换。在这里,您已经有了一个对象 ( json_data = {"name": "Jane", "age": 17})。

换句话说 :

>>> import json
>>> json.loads('{"name": "Jane", "age": 17}')  # loadString
{'name': 'Jane', 'age': 17}  # into an object (a dict)
>>> json.dumps({'name': 'Jane', 'age': 17})  # dumpString
'{"name": "Jane", "age": 17}'  # into a string (representing the object)
于 2021-09-24T15:41:03.860 回答