r = {'is_claimed': 'True', 'rating': 3.5}
r = json.dumps(r)
file.write(str(r['rating']))
Non riesco ad accedere ai miei dati in JSON. Che cosa sto facendo di sbagliato?
TypeError: string indices must be integers, not str
r = {'is_claimed': 'True', 'rating': 3.5}
r = json.dumps(r)
file.write(str(r['rating']))
Non riesco ad accedere ai miei dati in JSON. Che cosa sto facendo di sbagliato?
TypeError: string indices must be integers, not str
Risposte:
json.dumps()converte un dizionario in stroggetto, non un json(dict)oggetto! Quindi devi caricare il tuo strin a dictper usarlo usando il json.loads()metodo
Vedi json.dumps()come metodo di salvataggio e json.loads()come metodo di recupero.
Questo è l'esempio di codice che potrebbe aiutarti a capirlo di più:
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()restituisce la rappresentazione in stringa JSON del picton dict. Vedi i documenti
Non puoi farlo r['rating']perché r è una stringa, non più un dict
Forse intendevi qualcosa del genere
r = {'is_claimed': 'True', 'rating': 3.5}
json = json.dumps(r) # note i gave it a different name
file.write(str(r['rating']))
Non è necessario convertirlo in una stringa utilizzando json.dumps()
r = {'is_claimed': 'True', 'rating': 3.5}
file.write(r['is_claimed'])
file.write(str(r['rating']))
È possibile ottenere i valori direttamente dall'oggetto dict.
loaded_r, considerando che lo avevi già inseritor?