将Tweepy Status对象转换为JSON

KOM*_*KOM 35 python tweepy

我正在使用Tweepy下载推文.我有一个程序,然后将实际Status对象写入文本形式的文件.如何将其转换为JSON,或将此对象导入Python?我已经尝试使用JSON库进行编码,但Status不是JSON可序列化的.

tas*_*oor 82

Statustweepy本身的对象不是JSON可序列化的,但它有一个_json包含JSON可序列化响应数据的属性.例如:

>>> status_list = api.user_timeline(user_handler)
>>> status = status_list[0]
>>> json_str = json.dumps(status._json)
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这是在[model]上设置的私有属性(https://github.com/tweepy/tweepy/blob/cd46550b3ef068857f5de9c37bbdd0a72acb7462/tweepy/models.py#L78),文档中的任何地方都没有提及,也没有在其他地方使用过.代码.所以有一天可能会被删除.但另一方面,只要它在那里,你可以使用`json.dumps([status._json for status in status_list])来轻松地使用它来创建整个列表的json转储. (3认同)
  • @yoniLavi 是的,文档中没有提到它,而且很难找到。另一方面,这是非常有用的。当我们试图将原始数据转储到文件中时,我的一位队友发现了这一点。希望 tweepy 开发人员将来会添加这个或等效的方法作为记录的方法。 (2认同)

Gre*_*reg 6

更好的方法是使用扭曲的解析器。它的文档记录不是很好-请参阅Tweepy API参考 -但这是一个公共API,比使用该_json属性安全得多。

import tweepy
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth, parser=tweepy.parsers.JSONParser())
status = api.user_timeline(user=username, count=1)[0]
json.dumps(status)
Run Code Online (Sandbox Code Playgroud)

status 现在是一个json对象。

  • 适用于 Python 3.7,它应该是首选解决方案。 (2认同)