如何对实体进行JSON编码?

0 投票
4 回答
910 浏览
提问于 2025-04-16 14:13

我刚开始学习使用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

撰写回答