r = {'is_claimed': 'True', 'rating': 3.5}
r = json.dumps(r)
file.write(str(r['rating']))
Nie mogę uzyskać dostępu do moich danych w JSON. Co ja robię źle?
TypeError: string indices must be integers, not str
r = {'is_claimed': 'True', 'rating': 3.5}
r = json.dumps(r)
file.write(str(r['rating']))
Nie mogę uzyskać dostępu do moich danych w JSON. Co ja robię źle?
TypeError: string indices must be integers, not str
Odpowiedzi:
json.dumps()
konwertuje słownik na str
obiekt, a nie json(dict)
obiekt! Musisz więc załadować swój str
plik, dict
aby użyć go za pomocą json.loads()
metody
Zobacz json.dumps()
jako metodę zapisu i json.loads()
jako metodę pobierania.
Oto przykładowy kod, który może pomóc Ci lepiej to zrozumieć:
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()
zwraca reprezentację ciągu JSON słownika python. Zobacz dokumenty
Nie możesz tego zrobić, r['rating']
ponieważ r jest ciągiem, a nie dyktonem
Być może miałeś na myśli coś takiego
r = {'is_claimed': 'True', 'rating': 3.5}
json = json.dumps(r) # note i gave it a different name
file.write(str(r['rating']))
Nie trzeba konwertować go w ciągu za pomocą json.dumps()
r = {'is_claimed': 'True', 'rating': 3.5}
file.write(r['is_claimed'])
file.write(str(r['rating']))
Możesz pobrać wartości bezpośrednio z obiektu dict.
loaded_r
, biorąc pod uwagę, że już go maszr
?