4

有没有人让 jsonpickle 在谷歌应用引擎上工作?我的日志说没有模块,但有一个模块,就像你出生一样。我正在使用 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
4

2 回答 2

4

我已经成功地将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))
于 2010-01-05T15:14:19.067 回答
3

正如这篇文章所解释的,jsonpickle它需要几个底层 JSON 模块之一。我将按如下方式解决该问题——在需要 jsonpickle 的模块顶部放置以下几行:

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

这解决了问题: jsonpickle 需要simplejson(作为它可以使用的 JSON 模块之一),但 GAE 将它作为django.utils.simplejson,因此您需要适当地“别名”它。

于 2010-01-05T02:45:15.383 回答