Google App Engine JSONPICKLE

У кого-нибудь есть jsonpickle, работающий на движке приложений Google? В моих журналах написано, что нет модуля, но есть модуль точно такой же, как вы родились. Я использую jsonpickle 0.32.

<type 'exceptions.ImportError'>: No module named jsonpickle
Traceback (most recent call last):
  File "/base/data/home/apps/xxxxx/xxxxxxxxxxxxxxxxx/main.py", line 4, in <module>
    import jsonpickle

2 ответа

Решение

Мне удалось заставить его работать, регистрируя django.utils.simplejson как кодировщик / декодер json. В этом реальном файле index.py класс Pizza кодируется и декодируется обратно:

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

import jsonpickle

class Pizza:
    pass                

class Example(webapp.RequestHandler):
    def get(self):
        jsonpickle.load_backend('django.utils.simplejson',
                                'dumps','loads',ValueError)
        encoded = jsonpickle.encode(Pizza())
        self.response.out.write( jsonpickle.decode(encoded).__class__ )

run_wsgi_app(webapp.WSGIApplication([('/', Example),],debug=True))

Как объясняет этот пост, jsonpickle требуется один из нескольких базовых модулей JSON. Я бы исправил проблему следующим образом - поместите в верхней части вашего модуля (ей), которые нужно jsonpickle следующие несколько строк:

import sys
import django.utils.simplejson
sys.modules['simplejson'] = django.utils.simplejson

Это решает проблему: jsonpickle needs simplejson (как один из модулей JSON, который он может использовать), но GAE имеет его как django.utils.simplejsonтак что вам нужно "псевдоним" его соответствующим образом.

Другие вопросы по тегам