我很难将ndb模型返回为JSON。
我有一个游戏课,如下所示:
class Game(ndb.Model):
gameID = ndb.StringProperty
gameState = ndb.StringProperty
playerOne = ndb.StringProperty
playerTwo = ndb.StringProperty
def toJSON(self):
jsondata = {
"gameID" : self.key.id(),
"gameState" : self.gameState,
"playerOne" : self.playerOne,
"playerTwo" : self.playerTwo
}
return json.encode(jsondata)
这似乎工作正常,当使用以下代码创建和存储模型时,它可以工作(我认为)
class gameHandler(webapp2.RequestHandler):
def get(self):
gameID = self.request.get("gameID")
gameState = self.request.get("gameState")
playerOne = self.request.get("playerOne")
playerTwo = self.request.get("playerTwo")
game = Game(id=gameID)
game.gameState = gameState
game.playerOne = playerOne
game.playerTwo = playerTwo
game.put()
self.response.write(game.toJSON())
在本例中,"self.response.write(game.toJSON())“按需要输出JSON格式的文本,例如:
{"playerTwo":"AI","gameID":"Test2","playerOne":"Peter","gameState":"dog"}
但是,在下面的类中,我尝试以JSON的形式检索游戏模型,但是它会抛出:
TypeError: <class 'google.appengine.ext.ndb.model.StringProperty'> is not JSON serializable
抛出错误的代码:
class getGameHandler(webapp2.RequestHandler):
def get(self):
gameID = self.request.get("gameID")
game = Game.get_by_id(gameID)
self.response.write(game.toJSON())
我很困惑,因为"game.toJSON()“的两个实例都应该给出相同的结果,不是吗?我的代码中是否犯了一些基本错误?
发布于 2014-04-15 15:18:37
语法不正确,需要像这样声明ndb属性
gameID = ndb.StringProperty()
gameState = ndb.StringProperty()
playerOne = ndb.StringProperty()
playerTwo = ndb.StringProperty()
https://stackoverflow.com/questions/23087816
复制相似问题