Heroku ist praktisch, nicht wahr? Wenn Sie es vorerst nur bewegen, kann es auch ein Anfänger tun. Dies ist eine Geschichte, von der ich süchtig war, als ich versuchte, einen Discord-Bot auf Heroku auszuführen.
Pythons "json.loads ()" ist eine Funktion, die einen Wörterbuchtyp (assoziatives Array), der von "json.dumps ()" usw. in eine Zeichenfolge konvertiert wurde, in den ursprünglichen Wörterbuchtyp konvertiert. Der Rückgabewert ist natürlich ein Wörterbuchtyp.
Ich konnte es problemlos auf Local und GCP verwenden, aber als ich es auf Heroku auf die gleiche Weise verschob, wurde der String-Typ aus irgendeinem Grund zurückgegeben. Ich sage nicht, dass ich versehentlich "json.dumps ()" verwendet habe.
Heroku
##Json String.Mit Lasten entpacken
loaded_dict = json.loads(dumped_string)
##Ausgabe so, auch wenn Sie drucken
print(loaded_dict)
# {"key1":"value1", "key2":{"v2k1":"v2v1"}}
##Aber es ist eine Schnur
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'>
Herokus Suchbehinderung war so stark, dass ich nur Artikel wie "Ich habe versucht, Heroku zu verwenden" traf und die Grundursache des Problems nicht finden konnte. Die Anzeige von "print (load_dict)" selbst war jedoch nicht seltsam, daher habe ich sie mit "eval ()" gelöst.
Heroku
##Biss eval
loaded_dict = eval(json.loads(dumped_string))
##Lösung!
print(loaded_dict["key1"])
# "value1"
Recommended Posts