将Appengine数据存储区中的ReferenceProperty序列化为JSON

时间:2011-01-05 19:17:40

标签: python json serialization google-cloud-datastore

我使用以下代码将我的appengine数据存储区序列化为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')

类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 个答案:

答案 0 :(得分: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)