如何使用Python和NDB模型循环以下数据存储数据,然后返回json.dumps


[User(key=Key('User', 5275456790069248), auth_ids=[u'abc@gmail.com'], created=datetime.datetime(2017, 8, 29, 22, 50, 36, 297407), email='abc@gmail.com'), 
User(key=Key('User', 5838406743490560), auth_ids=[u'def@gmail.com'], created=datetime.datetime(2017, 8, 29, 16, 23, 16, 406468), email='def@gmail.com'), 
User(key=Key('User', 6401356696911872), auth_ids=[u'ghi@gmail.com'], created=datetime.datetime(2017, 8, 30, 12, 34, 51, 816926), email='ghi@gmail.com')]

我设法使用Python从Google App Engine数据存储中查询上述数据,但我无法将其循环到JSON中。即使我已经完成了文档,也不完全了解钥匙的概念。

除了希望理解将整个对象带有键json的方法之外,我如何才能提取"键"(在字符串中),"电子邮件"one_answers"创建"(dateTime)?顺便说一句,我正在尝试检索所有数据。

例如:

users_new_list = []
allusers = User.query().fetch()
for user in all_users:
    #How to get key in string and pass into 'users_new_list'
   users_new_list.append(keyString)

NDB中的Key是一个python类实例(一个对象),在JSON中未正确序列化。但是它带有.urlsafe()方法将其转换为可以json倾斜的字符串。从键检索实体:

您也可以使用实体的键来获得编码的字符串 用于嵌入URL:

url_string = sandy_key.urlsafe()

这会产生像agvozwxsb3ipcxihqwnjb3vudbiziwim之类的结果 后来被用于重建键并检索原始实体:

sandy_key = ndb.Key(urlsafe=url_string)

现在,要为JSON对整个实体进行编码,您必须编写一种自定义方法,该方法将Key属性首先转换为字符串。查看如何制作JSON序列化