web-dev-qa-db-fra.com

Comment analyser JSON dans Google App Engine?

Je voudrais analyser une chaîne JSON dans un objet sous Google App Engine (python). Que recommandez-vous? Quelque chose à encoder/stringifier serait bien aussi. Ce que vous recommandez est-il intégré ou une bibliothèque que je dois inclure dans mon application? Est-ce sécurisé? Merci.

81
Nogwater

Pensez à utiliser la bibliothèque json de Django , qui est incluse avec GAE.

from Django.utils import simplejson as json

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

Le lien ci-dessus contient des exemples du sérialiseur de Django, et voici le lien pour documentation de simplejson .

Si vous cherchez à stocker Python instances ou objets de classe (par opposition aux compositions de listes, chaînes, nombres et dictionnaires), vous voudrez probablement regarder pickle =.

J'espère que ça aide.

Par ailleurs, pour obtenir Django 1.0 (au lieu de Django 0.96) exécuté sur GAE, vous pouvez utiliser l'appel suivant dans votre main.py, par cet article :

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

Edit: prise en charge native de JSON dans Google App Engine 1.6.0 avec Python 2.7

À partir de Google App Engine 1.6.0, vous pouvez tiliser le Python 2.7 runtime en ajoutant runtime: python27 dans app.yaml, puis vous pouvez importer la bibliothèque JSON native avec import json.

114
Brian M. Hunt

Google App Engine prend désormais en charge python 2.7. Si vous utilisez python 2.7, vous pouvez effectuer les opérations suivantes:

import json
structured_dictionary = json.loads(string_received)
22
speedplane

Inclure la bibliothèque simplejson avec votre application?

6
agiliq

C'est une vieille question, mais j'ai pensé donner une réponse mise à jour et plus détaillée. Pour ceux qui arrivent ici maintenant, vous utilisez presque certainement python 2.6 ou supérieur, vous pouvez donc utiliser le module json intégré pour Python 2 (ou pour Python , car Google a récemment ajouté la prise en charge de Python 3 sur GAE). L'importation est la aussi simple que import json. Voici quelques exemples d'utilisation du module json:

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

Si vous utilisez une ancienne version de python, respectez la réponse de @Brian M. Hunt.

Encore une fois, voici la page doc du module json pour Python 2 , et ici c'est pour Python .

2
Brendan Goggin

Si vous utilisez Python2.6 ou supérieur, j'ai utilisé avec succès la fonction intégrée json . Load. Sinon, simplejson fonctionne sur 2.4 sans dépendances.

1
c_harm

Regardez la section python de json.org . Le support de bibliothèque standard pour JSON a commencé à python 2.6, qui je crois est plus récente que celle fournie par le moteur d'application. Peut-être l'une des autres options répertoriées?

0
Yuval F