Python-JSON-Codierung
Ich versuche, die Daten zu verschlüsseln, um JSON in Python und ich hatte ziemlich viel ärger. Ich glaube das problem ist einfach ein Missverständnis.
Ich bin relativ neu in Python und kam nie richtig vertraut mit den verschiedenen Python-Datentypen, so dass die meisten wahrscheinlich was Durcheinander mich.
Derzeit bin ich der Deklaration einer Liste Durchlaufen und eine andere Liste, und das Anhängen einer Liste innerhalb einer anderen:
import simplejson, json
data = [['apple', 'cat'], ['banana', 'dog'], ['pear', 'fish']]
x = simplejson.loads(data)
# >>> typeError: expected string or buffer..
x = simplejson.dumps(stream)
# >>> [["apple", "cat"], ["banana", "dog"], ["pear", "fish"]]
# - shouldn't JSON encoded strings be like: {{"apple":{"cat"},{"banana":"dog"}}
So dass ich entweder:
- Ich verstehe nicht, JSON-Syntax
- Ich verstehe nicht, die Pythons JSON Modul(E)
- Ich bin mit einen ungeeigneten Datentyp.
InformationsquelleAutor der Frage KeyboardInterrupt | 2009-06-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Python
lists
übersetzen zu JSONarrays
. Was es ist, Sie ist ein perfekt gültiges JSON-string, der verwendet werden könnte, in eine Javascript-Anwendung. Zu bekommen, was Sie erwartet, würden Sie brauchen, um einedict
:InformationsquelleAutor der Antwort Paolo Bergantino
Ich denke, Sie sind einfach auszutauschen dumps und Lasten.
Dem ersten kehrt als (JSON-kodiert) string seine Daten argument:
Dem zweiten das Gegenteil ist der Fall, die Rückgabe der entsprechenden Daten (JSON-kodiert) string-argument:
InformationsquelleAutor der Antwort Mapio
In
simplejson
(oder die Bibliothekjson
in Python 2.6 und höher)loads
nimmt ein JSON-string und gibt eine Python-Datenstrukturdumps
nimmt eine Python-Datenstruktur und gibt einen JSON-string. JSON-string codieren kann Javascript-arrays, nicht nur Objekte, und eine Python-Liste entspricht einem JSON-string Kodierung ein array. Um einen JSON-string, wiePython-Objekt, das Sie passieren zu
json.dumps
werden könnte:obwohl der JSON-string ist auch gültige Python-syntax für die gleichen
dict
. Ich glaube, die bestimmte Zeichenfolge, die Sie sagen, Sie erwarten, ist einfach ungültige JSON-syntax, jedoch.InformationsquelleAutor der Antwort Alex Martelli
Die Daten, die Sie Kodieren, ist ein keyless-array, also JSON-enkodiert Sie mit [] Klammern. Sehen http://www.json.org für weitere Informationen zu diesem Thema. Die geschweiften Klammern für Listen mit Schlüssel - /Wert-Paaren.
Aus http://www.json.org:
InformationsquelleAutor der Antwort ylebre
JSON verwendet eckige Klammern für Listen (
[ "one", "two", "three" ]
) und geschweifte Klammern für Schlüssel/Wert-Wörterbücher (auch als Objekte in JavaScript,{"one":1, "two":"b"}
).Der dump ist völlig korrekt, erhalten Sie eine Liste der drei Elemente, die jeweils eine Liste mit zwei strings.
wenn Sie wollte ein Wörterbuch, vielleicht so etwas wie dieses:
Ihre voraussichtliche string ( '
{{"apple":{"cat"},{"banana":"dog"}}
' ) " kein gültiges JSON. EinInformationsquelleAutor der Antwort Javier
So, simplejson.Lasten nimmt ein json-string und gibt eine Datenstruktur, die ist, warum Sie immer diese Art Fehler es ist.
simplejson.dumps(Daten) kommt zurück mit
Was ist ein json-array, das ist, was Sie wollen, da gab Sie diesem ein python-array.
Wenn Sie möchten, um ein "Objekt" type syntax würden Sie stattdessen tun
ist javascript wird kommen wie ein Objekt.
InformationsquelleAutor der Antwort emeryc
Versuchen:
NB: Basierend auf Paolo ' s Antwort.
InformationsquelleAutor der Antwort Tom Leys