将 Tweepy Status 对象转换为 JSON

问题描述 投票:0回答:4

我正在使用 Tweepy 下载推文。我有一个程序,然后将实际的

Status
对象以文本形式写入文件。如何将其转换成 JSON,或将此对象导回 Python?我试过使用 JSON 库进行编码,但 Status 不是 JSON 可序列化的。

python tweepy
4个回答
104
投票

tweepy 的

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

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

12
投票

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

status
现在是一个 json 对象。


1
投票
users = api.search_users('TimHortons', 1)
print(json.dumps(users[0]._json))

如果对象有 _json,则使用

json.dumps(users[0]._json)
。用户只是一个例子。


0
投票

使用最新版本的 tweepy,这变得容易多了。构建客户端时只需要通过

return_type=dict

client_v2 = tweepy.Client(
    bearer_token="",
    consumer_key="",        # api key in dev page
    consumer_secret="",     # api key secret in dev page
    access_token="",        # for user
    access_token_secret="", # for user 
    return_type=dict,       # <<----- not mentioned in examples
)
response = client_v2.SOME_METHOD(...)
print(json.dumps(response, indent=4))
© www.soinside.com 2019 - 2024. All rights reserved.