2013-04-21 22 views
0

所以我下面的問題是,當它發送json對象可以說我有多個項目在列表中?那麼它會發送很多對象,除了在上面創建的字典中更改該字段一次。出於某種原因,即使我使用上面的for循環從列表中創建一個字符串,它實際上並沒有這樣做,並且我得到了15個對象而不是1個對象,也許這個字段有15個東西在它們之間用逗號分隔。 我預期的輸出應該是 名,special1,SPECIAL2,special3..etc,review1,review2listproperty GAE到字符串方法

,而不是我得到 名,special1,review1 名,SPECIAL2,review1 名,special3,review1 等。 名,special1,review2 名,special1,review3

我的主要問題是如何將列表轉換爲數組或者甚至只是一個字符串(如toString方法),這樣的json轉儲不吐多倍?

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)) 

回答

0

我真的不知道你想要什麼,你的例子是混亂的。如果你使用JSON,爲什麼不把它保存爲列表?你爲什麼把它改成一個字符串?

看來你想是這樣的

for store in qy1: 
    records_to_send.append({'store name': store.storeName, 'specials': store.storeSpecial}, 'reviews': store.reviews}) 
+0

很好,因爲當我離開它,例如一個列表,當我運行的捲曲後聲明中我得到這個回: [{「商店名稱」:西爾斯, 「specials」:spec1,「reviews」:rev1},{「store name」:Sears,「specials」:spec2,「reviews」,rev1},.. etc直到兩個列表結束爲止] 我想要的是[ {「商店名稱」:Sears,「特價商品」:所有特價商品列表,「評論」:所有評論列表},「商店名稱」:walmart,「特價商品」:所有特價商品列表,「評論」:全部列表評論}] – user2202316 2013-04-21 13:36:30

+0

我相信你想要的就是你應該得到的。它會像[{商店名稱:name1,specials:[special1的列表],rev:[special2的列表]}]]你有沒有在數據存儲中檢查你的數據?或者你是否嘗試過我的代碼? – marcadian 2013-04-21 16:36:19

+0

是的,我曾經只是列表,但然後我有一個序列化的錯誤。然後,我將它切換到我上面提到的列表中,將列表提取爲字符串,就像發送它的名稱一樣。我根據你的建議回到了列表中,而且我仍然得到相同的結果。在數據存儲中,它只是作爲列表存儲(評論和特別報道)。我不清楚,如果我在列表中有兩個項目,爲什麼它需要兩個json對象而不是一個名稱,並且包含整個列表而不僅僅是一個元素。 – user2202316 2013-04-21 18:04:09