Python json.loads () renvoie str dans Heroku

introduction

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.

problème

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'>

Solutions

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

Python json.loads () renvoie str dans Heroku
python + django + scikit-learn + mecab (1) avec heroku
python + django + scikit-learn + mecab (2) avec heroku
Exécutez régulièrement Python sur Heroku Scheduler
Mon str (Python)
Redis sur Heroku
Python sur Windows
twitter avec python3
shimehari sur heroku
LINE heroku python
Python sur Windbg
Un mémo qui a fait un tutoriel pour exécuter python sur heroku
Une histoire sur l'exécution de Python sur PHP sur Heroku
Un mémorandum pour toucher Python Flask avec Heroku
Jusqu'à l'utilisation de PhantomJS avec Python sur Heroku
Installer python sur WSL
Configuration de PyOpenGL sur Python 3
Installez Python sur Pidora.
[Heroku] Mémo pour le déploiement d'applications Python à l'aide d'Heroku sous Windows [Python]
Installez Python sur Mac
Installer Python 3 dans un environnement Mac
J'ai essayé python pour la première fois avec heroku
Installez Python3.4 sur CentOS 6.6
Installer des pandas sur python2.6
J'ai essayé d'envoyer des courriels depuis sendgrid régulièrement avec heroku, avec python
Installez python sur Windows
Installez Python 2.7.3 sur CentOS 5.4
construire Python sur Ubuntu
Installez Python 3.3 sur Ubuntu 12.04
Installez Python 3.4 sur Mac
Installez Python 3.6 sur Docker
Un mémorandum où je suis tombé sur mon HEROKU & Python personnel (Flask)
Ne perdez pas contre Ruby! Comment exécuter Python (Django) sur Heroku
Comment déployer Pybot, le manuel Python le plus simple, sur Heroku
Exécutez Openpose sur Python (Windows)
Installez Python 3.8 sur RHEL 8 (AppStream)
Utilisez matplotlib sur Ubuntu 12 et Python
Installer watchdog sur Windows + Python 3.3
Installer pygame sur python3.4 sur Mac
Installez Python 3.8 sur CentOS 7 (SCL)
Graphique en temps réel avec Plotly (Python)
Déployer l'application Masonite sur Heroku 2020
Installation de Python la plus rapide sous Windows
[Python] Notes sur l'analyse des données
Créer un environnement Python sur Windows
Exécutez Tensorflow 2.x sur Python 3.7
Manipulation de python sur mac
Mettez à jour le python que vous aviez sur votre Mac à 3.7-> 3.8
Installez pandas 0.14 sur python3.4 [sur Mac]
Installez OpenCV sur Ubuntu + python
Remarques sur l'installation de Python sur votre Mac
Exécutez le CGI de Python sur CORESERVER
Messages Twitter dans Python 3 etc.
Exécutez la commande unix sur python
Construire un environnement Python avec Windows
Python --Installez MySQLDB sur EC2
Présentation de TensorFlow à Ubuntu + Python 2.7
Installez Python 3.8 sur CentOS 8 (AppStream)
J'ai exécuté python sur Windows
Diffusion sur LINE en utilisant python