我试图使用simplejson库,但我认为我的安装出了问题。它与一些函数一起工作,例如我已经尝试过simplejson。转储和它的工作很好,但当我尝试simplejson。加载,我得到一个错误。我不确定这是否是唯一有问题的地方,但这是我遇到的唯一问题。我正在测试一个简单的脚本,看起来像
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:appspython25libsite-packagesPIL__init__.py", line 302, in loads
File "buildbdist.win32eggsimplejsondecoder.py", line 314, in decode
TypeError: expected string or buffer
i installed with py setup.py install.
Installed c:appspython25libsite-packagessimplejson-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。
您的设置似乎没有问题,错误在您的代码中。
SimpleJSON遵循与标准json模块相同的接口。
From the docs ofsimplejson.loads
:
将s(包含JSON文档的str或unicode实例)反序列化为Python对象。
你的异常消息是:
TypeError: expected string or buffer
这是因为你给出的是一个对象,而不是对象的字符串表示。您已经有了结果,不需要调用该函数。
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)