在Appengine Datastore中将ReferenceProperty序列化为JSON

1 投票
1 回答
649 浏览
提问于 2025-04-16 09:28

我正在使用以下代码将我的应用引擎数据存储转换成JSON格式。

class DictModel(db.Model):
    def to_dict(self):
        return dict([(p, unicode(getattr(self, p))) for p in self.properties()])


 class commonWordTweets(DictModel):
    commonWords = db.StringListProperty(required=True)
    venue = db.ReferenceProperty(Venue, required=True, collection_name='commonWords')

class Venue(db.Model):
id = db.StringProperty(required=True)
fourSqid = db.StringProperty(required=False)
name = db.StringProperty(required=True)
twitter_ID = db.StringProperty(required=True)

这段代码会返回以下的JSON响应。

 [
  {
    "commonWords": "[u'storehouse', u'guinness', u'badge', u'2011"', u'"new', u'mayor', u'dublin)']",
    "venue": "<__main__.Venue object at 0x1028ad190>"
  }
]

我该如何让实际的场馆名称显示出来呢?

1 个回答

3

首先,虽然这不是你问题的直接回答,但强烈建议使用 simplejson 来生成 JSON,而不是自己尝试把结构转换成 JSON 字符串。

至于你的问题,ReferenceProperty 就是用来指向你的 Venue 对象的。所以你可以像平常一样使用它的属性。

可以试试这样的写法:

cwt = commonWordTweets()   # Replace with code to get the item from your datastore
d = {"commonWords":cwt.commonWords, "venue": cwt.venue.name}
jsonout = simplejson.dumps(d)

撰写回答