Как я могу разобрать JSON в Google App Engine?

81

Я хотел бы преобразовать строку JSON в объект в Google App Engine (python). Что вы порекомендуете? Было бы неплохо что-то кодировать / преобразовывать в строку. Что вы рекомендуете встроить, или библиотеку, которую я должен включить в свое приложение? Это безопасно? Благодарю.

Nogwater
источник
Какая версия, если Python есть в вашем стеке?
Я использую движок приложения версии 1, это должен быть python 2.5.
Nogwater

Ответы:

114

Рассмотрите возможность использования библиотеки json lib от Django , которая входит в состав GAE.

from django.utils import simplejson as json

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

По ссылке выше есть примеры сериализатора Django, а здесь - ссылка на документацию simplejson .

Если вы хотите сохранить экземпляры или объекты классов Python (в отличие от композиций списков, строк, чисел и словарей), вы, вероятно, захотите взглянуть на pickle .

Надеюсь, это поможет.

Между прочим, чтобы запустить Django 1.0 (вместо Django 0.96) в GAE, вы можете использовать следующий вызов в main.py согласно этой статье :

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

Изменить: встроенная поддержка JSON в Google App Engine 1.6.0 с Python 2.7

На Google App Engine 1.6.0, вы можете использовать среду выполнения Python 2.7 , добавив runtime: python27в app.yaml, а затем вы можете импортировать родную библиотеку JSON с import json.

Брайан М. Хант
источник
Отличный ответ, мне это очень помогло. Просто комментарий здесь: когда я использую функцию импорта json, при развертывании приложения я получаю ошибку сервера 500. Но когда я использую from django.utils import simplejson as json, он отлично работает.
Хосе Гарридо,
22

Google App Engine теперь поддерживает python 2.7. Если вы используете Python 2.7, вы можете сделать следующее:

import json
structured_dictionary = json.loads(string_received)
скоростной самолет
источник
2

Это старый вопрос, но я подумал, что дам обновленный, более подробный ответ. Для тех, кто попадает сюда сейчас, вы почти наверняка используете python 2.6 или выше, поэтому вы можете использовать встроенный модуль json для Python 2 (или для Python 3 , поскольку Google недавно добавил поддержку Python 3 в GAE). Импорт так же просто, как import json. Вот несколько примеров использования модуля 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}'

Если вы используете старую версию python, придерживайтесь ответа @Brian M. Hunt.

Опять же, вот страница документации для модуля json для Python 2 , а вот она для Python 3 .

Брендан Гоггин
источник
1

Если вы используете Python2.6 или выше, я успешно использовал встроенную функцию json .load. В противном случае simplejson работает на 2.4 без зависимостей.


источник
0

Взгляните на раздел python на json.org . Поддержка стандартной библиотеки для JSON началась в python 2.6, который, как мне кажется, новее, чем то, что предоставляет движок приложения. Может быть, один из других перечисленных вариантов?

Юваль Ф
источник
4
Это не имеет отношения к App Engine.
Тим Макнамара