Heroku est pratique, n'est-ce pas? Si vous le déplacez simplement pour le moment, même un débutant peut le faire. C'est une histoire à laquelle j'étais accro en essayant d'exécuter un bot Discord sur Heroku.
Json.loads ()
de Python est une fonction qui convertit un type de dictionnaire (tableau associatif) converti en une chaîne de caractères par json.dumps ()
etc. en le type de dictionnaire d'origine.
Naturellement, la valeur de retour est de type dictionnaire.
J'ai pu l'utiliser sur local et GCP sans aucun problème, mais lorsque je l'ai déplacé de la même manière sur heroku, le type de chaîne a été renvoyé pour une raison quelconque. Je ne dis pas que j'ai accidentellement utilisé json.dumps ()
.
Heroku
##Chaîne Json.Décompressez avec des charges
loaded_dict = json.loads(dumped_string)
##Sortie comme ça même si vous imprimez
print(loaded_dict)
# {"key1":"value1", "key2":{"v2k1":"v2v1"}}
##Mais c'est une chaîne
print(loaded_dict["key1"])
# TypeError: string indices must be integers
for k, v in loaded_dict.items():
...
# AttributeError: 'str' object has no attribute 'items'
print(type(loaded_dict["key1"]))
# <class 'str'>
L'obstruction de recherche d'Heroku était si forte que je n'ai touché que des articles comme "J'ai essayé d'utiliser Heroku" et je n'ai pas pu trouver la cause du problème.
Cependant, l'affichage de print (shared_dict)
lui-même n'était pas étrange, donc je l'ai résolu avec eval ()
.
Heroku
##Bite eval
loaded_dict = eval(json.loads(dumped_string))
##Solution!
print(loaded_dict["key1"])
# "value1"
Recommended Posts