r = {'is_claimed': 'True', 'rating': 3.5}
r = json.dumps(r)
file.write(str(r['rating']))
Я не могу получить доступ к своим данным в формате JSON. Что я делаю не так?
TypeError: string indices must be integers, not str
r = {'is_claimed': 'True', 'rating': 3.5}
r = json.dumps(r)
file.write(str(r['rating']))
Я не могу получить доступ к своим данным в формате JSON. Что я делаю не так?
TypeError: string indices must be integers, not str
Ответы:
json.dumps()
преобразует словарь в str
объект, а не в json(dict)
объект! Таким образом, вы должны загрузить свой str
в, dict
чтобы использовать его с помощью json.loads()
метода
Смотрите json.dumps()
как метод сохранения и json.loads()
как метод получения.
Вот пример кода, который может помочь вам понять это больше:
import json
r = {'is_claimed': 'True', 'rating': 3.5}
r = json.dumps(r)
loaded_r = json.loads(r)
loaded_r['rating'] #Output 3.5
type(r) #Output str
type(loaded_r) #Output dict
json.dumps()
возвращает строковое представление JSON для python dict. Посмотреть документы
Вы не можете сделать это, r['rating']
потому что г это строка, а не диктат больше
Возможно, вы имели в виду что-то вроде
r = {'is_claimed': 'True', 'rating': 3.5}
json = json.dumps(r) # note i gave it a different name
file.write(str(r['rating']))
Нет необходимости конвертировать его в строку с помощью json.dumps()
r = {'is_claimed': 'True', 'rating': 3.5}
file.write(r['is_claimed'])
file.write(str(r['rating']))
Вы можете получить значения непосредственно из объекта dict.
loaded_r
, учитывая, что она у вас уже естьr
?