将新的dict添加到json输出python

时间:2014-02-24 09:36:03

标签: python json twitter

json非常新,所以如果我在这里使用错误的条款,请原谅。我尝试使用更新的Twitter信息每x分钟创建一个json文件的任何方法。现在我知道我可以使用twitter api并抓住我需要的东西,但我想要搞砸一下。我的问题是获得一个新的密钥/字典?或者为for语句中添加的每个新项目调用它。

我想要的是什么

[
  {
    "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 个答案:

答案 0 :(得分:2)

您应该让JSON编码器为您自己构建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))