我正在使用 Tweepy 下载推文。我有一个程序,然后将实际的
Status
对象以文本形式写入文件。如何将其转换成 JSON,或将此对象导回 Python?我试过使用 JSON 库进行编码,但 Status 不是 JSON 可序列化的。
tweepy 的
Status
对象本身不是JSON 可序列化的,但它有一个_json
属性,其中包含JSON 可序列化的响应数据。例如:
>>> status_list = api.user_timeline(user_handler)
>>> status = status_list[0]
>>> json_str = json.dumps(status._json)
一个更好的方法是使用 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 对象。
users = api.search_users('TimHortons', 1)
print(json.dumps(users[0]._json))
如果对象有 _json,则使用
json.dumps(users[0]._json)
。用户只是一个例子。
使用最新版本的 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))