将 Tweepy 状态对象转换为 JSON

Posted

技术标签:

【中文标题】将 Tweepy 状态对象转换为 JSON【英文标题】:Convert Tweepy Status object into JSON 【发布时间】:2015-03-10 03:05:08 【问题描述】:

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

【问题讨论】:

我做了,我试过使用 JSON 库,但对象不是 JSON 可序列化的 【参考方案1】:

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

>>> status_list = api.user_timeline(user_handler)
>>> status = status_list[0]
>>> json_str = json.dumps(status._json)

【讨论】:

谢谢。我需要一段时间才能弄清楚,直到看到你的答案。 请注意,这是在 model 上设置的私有属性,在文档的任何地方都没有提到,也没有在代码的其他地方使用。因此,它可能有一天会被删除。但另一方面,只要它存在,您就可以使用它轻松地使用 json.dumps([status._json for status in status_list]) 创建整个列表的 json 转储。 @yoniLavi 是的,文档中没有提到它,而且很难找到。另一方面,这非常有用。当我们试图将原始数据转储到文件中时,我的一位队友发现了这一点。希望 tweepy 开发人员将来会添加此方法或与文档方法等效的方法。【参考方案2】:

更好的方法是使用 tweepy 解析器。它没有很好地记录 - 请参阅 Tweepy API reference - 但它是一个公共 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)

status 现在是一个 json 对象。

【讨论】:

这不是(不再是?)真的 我试过了:status = api.get_status(tweet_id) 它给了我:(<all_tweets_fields>) is not JSON serializable 如果可以的话,自己试试 但它应该是一个状态对象,所以我认为状态对象不是 JSON 可序列化的。 对于您发布的示例,它给了我同样的错误,所以即使对于 user_timeline 在 Python 3.7 中工作,它应该是首选的解决方案。【参考方案3】:
users = api.search_users('TimHortons', 1)
print(json.dumps(users[0]._json))

如果对象有 _json,则使用 json.dumps(users[0]._json)。用户只是一个例子。

【讨论】:

以上是关于将 Tweepy 状态对象转换为 JSON的主要内容,如果未能解决你的问题,请参考以下文章

序列化和json

将 JSON 对象转换为 Buffer 并将 Buffer 转换为 JSON 对象

Jackson 对象和JSON的相互转换

在 React 中将组件状态转换为 JSON

java将json字符串转换成对象批量存储数据

js 将json字符串转换为json对象或json对象转换成json字符串