Conversión de diccionario a JSON en python

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 

json.dumps() convierte un diccionario al objeto str, no a un objeto json (dict)! entonces debes cargar tu str en un dict para usarlo usando el método json.loads()

Consulte json.dumps() como método de guardado y json.loads() como método de recuperación.

Esta es la muestra del código que puede 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 puede hacer r['rating'] porque r es una cadena, no un dictado más

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 utilizando 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.