¿Cómo puedo analizar JSON en Google App Engine?

81

Me gustaría analizar una cadena JSON en un objeto en Google App Engine (python). ¿Que recomiendas? Algo para codificar / secuenciar también sería bueno. ¿Lo que recomiendan está integrado o es una biblioteca que tengo que incluir en mi aplicación? Es seguro? Gracias.

Nogwater
fuente
¿Qué versión si Python está en tu pila?
Estoy usando la versión 1 del motor de aplicaciones, que debería ser Python 2.5.
Nogwater

Respuestas:

114

Considere usar la biblioteca json de Django , que se incluye con GAE.

from django.utils import simplejson as json

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

El enlace de arriba tiene ejemplos del serializador de Django, y aquí está el enlace para la documentación de simplejson .

Si está buscando almacenar instancias u objetos de la clase Python (a diferencia de composiciones de listas, cadenas, números y diccionarios), probablemente quiera mirar pickle .

Espero que eso ayude.

Por cierto, para que Django 1.0 (en lugar de Django 0.96) se ejecute en GAE, puede usar la siguiente llamada en su main.py, según este artículo :

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

Editar: compatibilidad con JSON nativo en Google App Engine 1.6.0 con Python 2.7

A partir de Google App Engine 1.6.0, se puede utilizar el tiempo de ejecución de Python 2.7 mediante la adición runtime: python27de app.yaml, y luego se puede importar la biblioteca JSON nativo con import json.

Brian M. Hunt
fuente
Gran respuesta, me ayudó mucho. Solo un comentario aquí: cuando uso la función de importación json, obtengo un error de servidor 500 al implementar mi aplicación. Pero cuando uso de django.utils import simplejson como json, funciona perfectamente.
Jose Garrido
22

Google App Engine ahora es compatible con Python 2.7. Si usa Python 2.7, puede hacer lo siguiente:

import json
structured_dictionary = json.loads(string_received)
avión de velocidad
fuente
2

Esta es una pregunta antigua, pero pensé en dar una respuesta actualizada y más detallada. Para aquellos que aterrizan aquí ahora, es casi seguro que esté usando python 2.6 o superior, por lo que puede usar el módulo json incorporado para Python 2 (o para Python 3 , ya que Google recientemente agregó soporte para Python 3 en GAE). Importar es tan fácil como import json. Aquí hay algunos ejemplos de cómo usar el módulo 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 está utilizando una versión anterior de Python, siga la respuesta de @Brian M. Hunt.

Nuevamente, aquí está la página de documentación del módulo json para Python 2 , y aquí está para Python 3 .

Brendan Goggin
fuente
1

Si está usando Python2.6 o superior, he usado con éxito la función json .load incorporada. De lo contrario, simplejson funciona en 2.4 sin dependencias.


fuente
0

Mire la sección de python de json.org . El soporte de la biblioteca estándar para JSON comenzó en python 2.6, que creo que es más nuevo que lo que proporciona el motor de la aplicación. ¿Quizás alguna de las otras opciones enumeradas?

Yuval F
fuente
4
Eso no es realmente relevante para App Engine.
Tim McNamara