r = {'is_claimed': 'True', 'rating': 3.5}
r = json.dumps(r)
file.write(str(r['rating']))
No puedo acceder a mis datos en el JSON. ¿Qué estoy haciendo mal?
TypeError: string indices must be integers, not str
r = {'is_claimed': 'True', 'rating': 3.5}
r = json.dumps(r)
file.write(str(r['rating']))
No puedo acceder a mis datos en el JSON. ¿Qué estoy haciendo mal?
TypeError: string indices must be integers, not str
Respuestas:
json.dumps()
convierte un diccionario en str
objeto, no un json(dict)
objeto! Entonces tienes que cargar tu str
a dict
para usarlo usando el json.loads()
método
Ver json.dumps()
como método de guardar y json.loads()
como método de recuperación.
Este es el ejemplo de código que podría ayudarlo a comprenderlo más:
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()
devuelve la representación de cadena JSON del dict python. Ver los documentos
No puedes hacerlo r['rating']
porque r es una cadena, ya no es un dict
Quizás quisiste decir algo como
r = {'is_claimed': 'True', 'rating': 3.5}
json = json.dumps(r) # note i gave it a different name
file.write(str(r['rating']))
No es necesario convertirlo en una cadena usando json.dumps()
r = {'is_claimed': 'True', 'rating': 3.5}
file.write(r['is_claimed'])
file.write(str(r['rating']))
Puede obtener los valores directamente del objeto dict.
loaded_r
, considerando que ya lo tienesr
?