AttributeError: объект 'str' не имеет атрибутов 'load', json.loads ()

обрывки

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' 

Как решить проблему?

json.load принимает указатель на файл, и вы передаете строку. Вероятно, вы использовали json.loads который принимает в качестве первого параметра строку.

Во-вторых, когда вы import json , вы должны позаботиться о том, чтобы не перезаписывать его, если он не является полностью преднамеренным: json = json.load(teststr) <- Плохо . Это переопределяет модуль, который вы только что импортировали, в результате чего любые будущие вызовы модуля фактически выполняют вызовы созданного 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) 

ИЛИ вы можете изменить имя модуля, которое вы импортируете

 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) 

ИЛИ вы можете специально импортировать, какие функции вы хотите использовать из модуля

 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)