r = {'is_claimed': 'True', 'rating': 3.5}
r = json.dumps(r)
file.write(str(r['rating']))
Je ne peux pas accéder à mes données dans le JSON. Qu'est-ce que je fais 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']))
Je ne peux pas accéder à mes données dans le JSON. Qu'est-ce que je fais mal?
TypeError: string indices must be integers, not str
Réponses:
json.dumps()
convertit un dictionnaire en str
objet, pas en json(dict)
objet! Vous devez donc charger votre str
dans un dict
pour l'utiliser en utilisant la json.loads()
méthode
Voir json.dumps()
comme méthode de sauvegarde et json.loads()
comme méthode de récupération.
Voici l'exemple de code qui pourrait vous aider à mieux le comprendre:
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()
renvoie la représentation sous forme de chaîne JSON du dict python. Voir les documents
Vous ne pouvez pas faire r['rating']
parce que r est une chaîne, plus un dict
Peut-être que vous vouliez dire quelque chose comme
r = {'is_claimed': 'True', 'rating': 3.5}
json = json.dumps(r) # note i gave it a different name
file.write(str(r['rating']))
Pas besoin de le convertir en chaîne en utilisant json.dumps()
r = {'is_claimed': 'True', 'rating': 3.5}
file.write(r['is_claimed'])
file.write(str(r['rating']))
Vous pouvez obtenir les valeurs directement à partir de l'objet dict.
loaded_r
, étant donné que vous l'avez déjà faitr
?