我开始使用Google App Engine了。我想像Twitter一样进行AJAX聊天。
class ChatMessage(db.Model):
message = db.StringProperty()
created = db.DateTimeProperty(auto_now=True)
服务器JSON对响应进行编码,
class RPCHandler(webapp.RequestHandler):
def get(self):
chat_list = {'message':'Hello!'}
self.response.out.write(simplejson.dumps(chat_list))
结果:你好!
这没关系。但是替换RPCHandler
class RPCHandler(webapp.RequestHandler):
def get(self):
newchat = ChatMessage(message="Hi!")
newchat.put()
que = db.Query(ChatMessage).order('-created')
chat_list = que.fetch(limit=1)
self.response.out.write(simplejson.dumps(chat_list))
结果:错误。服务器无法访问(获取)
我如何对实体进行JSON编码?
答案 0 :(得分:3)
在App Engine Python中,您可以使用此脚本将db.Models编码为JSON。您可能必须自定义某些部分,例如DateTime格式。
http://code.google.com/p/google-app-engine-samples/source/browse/trunk/geochat/json.py?r=55
答案 1 :(得分:1)
您不能直接在db.Model项列表中使用simplejson.dumps()。
使用一些方便的方法来查看我的answer for extending db.Model,以便序列化db.Model实例
答案 2 :(得分:0)
我将gson用于GAE / J.你可以给它一个对象(或者在你的情况下,从结果集中提取东西)并获得一个JSON字符串。
答案 3 :(得分:0)
检查应用引擎的错误日志。它会告诉你它遇到了什么错误。可能你正在尝试编码一个它不熟悉的json的Python类型。 JSON只会执行列表和词典之类的简单操作。您无法将其用于复杂的自定义类型。