Python listproperty GAE到字符串方法
所以我下面的问题是,当它发送json对象时,让我们假设列表中有多个项目?它发送了那么多的对象,除了在我上面创建的dict中改变那个字段一次。出于某种原因,尽管我使用上面的For循环从列表中创建了一个字符串,但实际上并没有这样做,我得到了15个对象,而不是1个对象,其中可能有一个字段,其中有15个东西用逗号分隔。 我的预期输出应该是 名称,特殊1,特殊2,特殊3..等,评审1,评审2 相反,我得到了 名称、专题1、评论1 名称、专题2、评论1 名称、特殊3、审查1 等 名称、特殊1、审查2 名称、专题1、评论3 我的主要问题是,如何将列表转换为数组,甚至仅仅转换为字符串(如toString方法),以便json转储不会产生倍数Python listproperty GAE到字符串方法,python,json,google-app-engine,Python,Json,Google App Engine,所以我下面的问题是,当它发送json对象时,让我们假设列表中有多个项目?它发送了那么多的对象,除了在我上面创建的dict中改变那个字段一次。出于某种原因,尽管我使用上面的For循环从列表中创建了一个字符串,但实际上并没有这样做,我得到了15个对象,而不是1个对象,其中可能有一个字段,其中有15个东西用逗号分隔。 我的预期输出应该是 名称,特殊1,特殊2,特殊3..等,评审1,评审2 相反,我得到了 名称、专题1、评论1 名称、专题2、评论1 名称、特殊3、审查1 等 名称、特殊1、审查2 名称、
class store(db.Model):
mykey = db.StringProperty(db.Key)
storeSpecial = db.ListProperty(item_type=str)
reviews = db.ListProperty(item_type=str)
storeName = db.StringProperty()
#later in the code
qy1 = GqlQuery("SELECT storeName,storeSpecial,reviews FROM store WHERE mykey =:1",dataInput)
records_to_send = []
for i in qy1:
rev =""
for k in i.review:
rev = rev + str(k) + ","
spec = ""
for k2 in i.storeSpecial:
spec = spec + str(k2) + ","
output = {"store name": i.storeName,"specials": spec,"reviews":rev}
records_to_send.append(output)
self.response.out.write(json.dumps(records_to_send))
我不确定你想要什么,你的例子让人困惑。如果您使用JSON,为什么不将其保留为列表?为什么要把它改成字符串 看来你想要这样的东西
for store in qy1:
records_to_send.append({'store name': store.storeName, 'specials': store.storeSpecial}, 'reviews': store.reviews})
因为当我把它作为一个列表,例如,我在运行curl post语句时得到这个:[{“商店名称”:Sears,“specials”:spec1,“评论”:rev1},{“商店名称”:Sears,“specials”:spec2,“评论”,rev1},…等等,直到两个列表的末尾]我想要的是[{“商店名称”:Sears,“specials”:所有评论的列表,“评论”:所有评论的列表},“店名”:沃尔玛,“特价品”:所有特价品列表,“评论”:所有评论列表]我相信你想要的就是你应该得到的。它会像[{店名:名称1,特价品:[特价品列表1],rev:[特价品列表2]}]你检查过数据存储中的数据吗?或者你尝试过我上面的代码吗?是的,我以前只使用列表,但后来我遇到了一个可序列化的错误。然后我将它切换到上面的位置,将列表提取为一个字符串,就像发送它的名称一样。我根据你的建议返回列表,仍然得到相同的结果。在数据中我不明白,如果我在列表中有两个项目,为什么它需要两个json对象,而不是一个有名称的对象,并且包含整个列表,而不是其中的一个元素。