AttributeError:' str'对象没有属性'加载',json.loads()

时间:2016-07-11 13:04:30

标签: python json

片段

    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'

如何解决问题?

1 个答案:

答案 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)