it-swarm.com.ru

Преобразование словаря в JSON

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
234
sheetal_158

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
377
Iman Mirzadeh

json.dumps() возвращает строковое представление JSON слова python. см. Документы

Вы не можете сделать r['rating'], потому что r это строка, а не диктат

Возможно, вы имели в виду что-то вроде

r = {'is_claimed': 'True', 'rating': 3.5}
json = json.dumps(r) # note i gave it a different name
file.write(str(r['rating']))
32
Tim Castelijns

Нет необходимости конвертировать его в строку с помощью json.dumps()

r = {'is_claimed': 'True', 'rating': 3.5}
file.write(r['is_claimed'])
file.write(str(r['rating']))

Вы можете получить значения непосредственно из объекта dict.

2
user3273866

Определение r в качестве словаря должно помочь:

>>> r: dict = {'is_claimed': 'True', 'rating': 3.5}
>>> print(r['rating'])
3.5
>>> type(r)
<class 'dict'>
0
Aslan