Як я можу проаналізувати JSON в Google App Engine?


81

Я хотів би проаналізувати рядок JSON на об'єкт під Google App Engine (python). Що ви порадите? Щось для кодування / stringify теж було б непогано. Вбудоване те, що ви рекомендуєте, чи бібліотека, яку я повинен включити у свій додаток? Це безпечно? Дякую.


Яка версія, якщо Python у вашому стеку?

Я використовую додаток движка версії 1, який повинен бути python 2.5.
Ногвотер

Відповіді:


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 (на відміну від композицій списків, рядків, чисел та словників), ви, мабуть, хочете поглянути на розсольник .

Я сподіваюся, що це допоможе.

До речі, щоб отримати 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.


Чудова відповідь, це мені дуже допомогло. Тільки коментар тут: Коли я використовую функцію import json, при розгортанні мого додатка з’являється помилка сервера 500. Але коли я використовую імпорт із django.utils simplejson як 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.

Знову ж, ось сторінка doc для модуля json для Python 2 , а ось для Python 3 .


1

Якщо ви використовуєте Python2.6 або новішу версію, я з успіхом використав вбудовану функцію json .load. В іншому випадку simplejson працює на 2.4 без залежностей.


0

Подивіться на розділ python на json.org . Стандартна бібліотечна підтримка JSON розпочалася з python 2.6, який, на мою думку, є новішим, ніж те, що надає движок додатків. Можливо, один із інших перерахованих варіантів?


4
Це насправді не стосується App Engine.
Тім Макнамара
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.