片段
import json
teststr = '{"user": { "user_id": 2131, "name": "John", "gender": 0, "thumb_url": "sd", "money": 23, "cash": 2, "material": 5}}'
json = json.load(teststr)
抛出异常
Traceback (most recent call last):
File "<input>", line 1, in <module>
AttributeError: 'str' object has no attribute 'loads'
如何解决问题?
答案 0 :(得分:18)
json.load
接收文件指针,然后传入一个字符串。您可能想要使用json.loads
,它将字符串作为其第一个参数。
其次,当你import json
时,你应该注意不要覆盖它,除非它是完全故意的:json = json.load(teststr)
&lt; - Bad 。
这将覆盖您刚刚导入的模块,以后对模块的任何调用实际上都会调用已创建的dict。
要解决此问题,您可以在加载后使用另一个变量:
import json
teststr = '{"user": { "user_id": 2131, "name": "John", "gender": 0, "thumb_url": "sd", "money": 23, "cash": 2, "material": 5}}'
jsonstr = json.loads(teststr)
OR 您可以更改要导入的模块名称
import json as JSON
teststr = '{"user": { "user_id": 2131, "name": "John", "gender": 0, "thumb_url": "sd", "money": 23, "cash": 2, "material": 5}}'
json = JSON.loads(teststr)
OR 您可以从模块中专门导入要使用的功能
from json import loads
teststr = '{"user": { "user_id": 2131, "name": "John", "gender": 0, "thumb_url": "sd", "money": 23, "cash": 2, "material": 5}}'
json = loads(teststr)