Wie kann ich JSON in Google App Engine analysieren?

81

Ich möchte eine JSON-Zeichenfolge in ein Objekt unter Google App Engine (Python) analysieren. Was empfehlen Sie? Etwas zu codieren / stringifizieren wäre auch schön. Ist das, was Sie empfehlen, eingebaut oder eine Bibliothek, die ich in meine App aufnehmen muss? Ist es sicher? Vielen Dank.

Nogwater
quelle
Welche Version, wenn Python auf Ihrem Stack ist?
Ich verwende App Engine Version 1, die Python 2.5 sein sollte.
Nogwater

Antworten:

114

Erwägen Sie die Verwendung von Djangos json lib , die in GAE enthalten ist.

from django.utils import simplejson as json

# load the object from a string
obj = json.loads( string )

Der obige Link enthält Beispiele für den Serializer von Django. Hier ist der Link für die Dokumentation von simplejson .

Wenn Sie Python-Klasseninstanzen oder -objekte speichern möchten (im Gegensatz zu Kompositionen aus Listen, Zeichenfolgen, Zahlen und Wörterbüchern), sollten Sie sich Pickle ansehen .

Ich hoffe das hilft.

Um Django 1.0 (anstelle von Django 0.96) auf GAE zum Laufen zu bringen, können Sie übrigens den folgenden Aufruf in Ihrer main.py gemäß diesem Artikel verwenden :

from google.appengine.dist import use_library
use_library('django', '1.0')

Bearbeiten: Native JSON-Unterstützung in Google App Engine 1.6.0 mit Python 2.7

Ab Google App Engine 1.6.0 können Sie die Python 2.7 Runtime verwenden durch Zugabe von runtime: python27in app.yaml, und dann können Sie die native JSON - Bibliothek importieren mit import json.

Brian M. Hunt
quelle
Tolle Antwort, es hat mir sehr geholfen. Nur ein Kommentar hier: Wenn ich die Funktion zum Importieren von JSON verwende, wird beim Bereitstellen meiner App ein 500-Server-Fehler angezeigt. Aber wenn ich den von django.utils verwendeten Import simplejson als json verwende, funktioniert es perfekt.
Jose Garrido
22

Google App Engine unterstützt jetzt Python 2.7. Wenn Sie Python 2.7 verwenden, können Sie Folgendes tun:

import json
structured_dictionary = json.loads(string_received)
Geschwindigkeitsflugzeug
quelle
2

Dies ist eine alte Frage, aber ich dachte, ich würde eine aktualisierte, detailliertere Antwort geben. Für diejenigen, die jetzt hier landen, verwenden Sie mit ziemlicher Sicherheit Python 2.6 oder höher, sodass Sie das integrierte JSON-Modul für Python 2 (oder für Python 3 , da Google kürzlich die Unterstützung für Python 3 auf GAE hinzugefügt hat) verwenden können. Der Import ist so einfach wie import json. Hier einige Beispiele zur Verwendung des JSON-Moduls:

import json

# parse json_string into a dict
json_string = '{"key_one": "value_one", "key_two": 1234}'
json_dict = json.loads(json_string)
# json_dict: {u'key_two': 1234, u'key_one': u'value_one'}

# generate json from a dict
json_dict = {'key': 'value', 'key_two': 1234, 'key_three': True}
json_string = json.dumps(json_dict)
# json_string: '{"key_two": 1234, "key": "value", "key_three": true}'

Wenn Sie eine ältere Version von Python verwenden, halten Sie sich an die Antwort von @Brian M. Hunt.

Auch hier ist die Dokumentseite für das JSON-Modul für Python 2 und hier für Python 3 .

Brendan Goggin
quelle
1

Wenn Sie Python2.6 oder höher verwenden, habe ich mit Erfolg die integrierte json .load-Funktion verwendet. Andernfalls funktioniert simplejson unter 2.4 ohne Abhängigkeiten.


quelle
0

Schauen Sie sich den Python-Abschnitt von json.org an . Die Standardbibliotheksunterstützung für JSON begann mit Python 2.6, das meiner Meinung nach neuer ist als das, was die App-Engine bietet. Vielleicht eine der anderen aufgeführten Optionen?

Yuval F.
quelle
4
Das ist für App Engine nicht wirklich relevant.
Tim McNamara