我正在尝试使用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.
***************************************************************************我重新安装了它,但它不起作用。
我被限制使用这个特定的包和python2.5。
发布于 2021-09-24 15:41:04
您的设置似乎没有问题,错误出在您的代码中。
SimpleJSON遵循与标准json模块相同的接口。
来自simplejson.loads的文档:
Python将s(包含
文档的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)https://stackoverflow.com/questions/69314039
复制相似问题