如何对实体进行JSON编码?
我刚开始学习使用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格式呢?
4 个回答
0
我在GAE/J中使用gson。你可以把一个对象(或者在你的情况下,从结果集中提取数据)传给它,然后它会给你一个JSON格式的字符串。
1
你不能直接对一堆 db.Model 项目使用 simplejson.dumps()。
可以看看我的 回答,里面有一些扩展 db.Model 的实用方法,可以帮助你把 db.Model 实例转换成可以使用的格式。
3
在App Engine的Python环境中,你可以使用这个脚本将数据库模型转换成JSON格式。你可能需要根据自己的需求调整一些部分,比如日期时间的格式。
http://code.google.com/p/google-app-engine-samples/source/browse/trunk/geochat/json.py?r=55