json.dump() gibt mir "TypeError: Schlüssel muß ein string sein"
Ich habe einige sehr einfache code, der nimmt ein Wörterbuch mit einem Tupel als Schlüssel-und verwandelt es in ein json:
In [11]:
import simplejson as json
In [12]:
data = {('category1', 'category2'): 4}
In [13]:
json.dumps(data)
Allerdings läuft der code gibt mir:
TypeError: keys must be a string
Ich habe versucht, str()'ing, die Tasten und alles andere, was ich finden kann, aber ohne Glück.
- Kennen Sie das JSON-format? Es nicht erlaubt, die Schlüssel wie
('category1', 'category2')
- was solls, es muss nicht Tupeln auf allen. Sie müssen organisieren Sie Ihre Daten. - Sie können die hack, indem Sie string aus dem Tupel wie {"category1#category2":4}. JSON selbst funktioniert nicht mit Tupel als Schlüssel.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der Fehler scheint ziemlich klar: Ihre Schlüssel müssen strings sein.
Wenn ich dem Beispiel aus Ihrer Frage und
str()
-ify den Tasten:Funktioniert es Prima:
Gesagt haben, dass, in deiner position würde ich in Erwägung ziehen, Ihre Schlüssel mehr lesbar. Vielleicht so etwas wie:
Diesem dreht sich ein Schlüssel wie
('category1', 'category2')
incategory1:category2
,Bitte versuchen Sie die folgenden Ansatz.
Stellen Sie den Schlüssel des dictionary einen string, sondern als Tupel vor der Konvertierung nach json. Beim konvertieren von json zurück zum Wörterbuch, konvertieren zurück in Liste/Tupel.
Vergessen Sie nicht, wieder zurück konvertieren Sie die string-Liste, sobald Sie Sie konvertieren Lesen der json-Wörterbuch
Ich weiß, dass Das Zen of Python Staaten
Aber für meinen Kontext, ich hatte einige Ebenen von geschachtelten dicts. Also ich rekursiv behandelt:
Passen Sie diesen code entsprechend Ihrem Kontext.