2014-02-24 15 views
0

json的新特性,請原諒,如果我在這裏使用了錯誤的術語。任何方法,我試圖創建一個JSON文件,每隔x分鐘更新Twitter信息。現在我知道我可以使用twitter api並抓住我需要的東西,但我想要混亂一點。我的問題是獲得一個新的鍵/字典?或者爲for語句中添加的每個新項目調用什麼。向json輸出添加新的字典python

什麼即時試圖讓

[ 
    { 
    "name": "thename", 
    "date": "thedate", 
    "text": "thetext" 
    }, <--- trying to get that little comma 
    { 
    "name": "thename", 
    "date": "thedate", 
    "text": "thetext" 
    } 
] 

現在我得到我想要的數據和所有,但不是逗號。它輸出所有,但不喜歡它應該與那個使它有效的小角色的東西。

[ 
    { 
    "name": "thename", 
    "date": "thedate", 
    "text": "thetext" 
    } <--- I get this instead for each new object 
    { 
    "name": "thename", 
    "date": "thedate", 
    "text": "thetext" 
    } 
] 

這裏只是代碼的一小部分,其餘部分應該是解釋性的,因爲它只是Twitter的oauth的東西。

for player in users: 
    statuses = api.GetUserTimeline(screen_name=player, count=10) 
    print "[" 

    for s in statuses: 
      print json.dumps('timestamp': s.created_at,'username': s.user.name,'status': s.text) 
    print "]" 

也就是有沒有更好的方式做[]在開始和結束,因爲我知道這是醜陋和方式未正確我敢打賭,XD。就像我在json/python上說的新手一樣,但是它有很好的學習體驗。

+1

您實際上並未在for循環中打印逗號。然而,@ poke的答案是要走的。讓json處理整個json消息。 – Will

回答

2

而不是試圖自己構建JSON數組,你應該讓JSON編碼器也爲你做。爲此,只需將對象列表傳遞給json.dumps即可。因此,不是單獨打印每個JSON對象,只是將它們收集到一個列表中,然後轉儲:

allstatuses = [] 
for player in users: 
    statuses = api.GetUserTimeline(screen_name=player, count=10) 
    for s in statuses: 
     allstatuses.append({'timestamp': s.created_at, 'username': s.user.name, 'status': s.text}) 

print(json.dumps(allstatuses)) 
+0

工作就像一個魅力,我知道必須有更好的方式。只是無法找到一個很好的教程。謝謝你。 – xLRDxREVENGEx