【发布时间】:2015-03-10 03:05:08
【问题描述】:
我正在使用Tweepy 下载推文。我有一个程序,然后将实际的Status 对象以文本形式写入文件。如何将其转换为 JSON,或将此对象导入回 Python?我尝试使用 JSON 库进行编码,但 Status 不是 JSON 可序列化的。
【问题讨论】:
-
我做了,我试过使用 JSON 库,但对象不是 JSON 可序列化的
我正在使用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)
【讨论】:
json.dumps([status._json for status in status_list]) 创建整个列表的 json 转储。
更好的方法是使用 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 对象。
【讨论】:
api.get_status(tweet_id) 它给了我:(<all_tweets_fields>) is not JSON serializable 如果可以的话,自己试试
users = api.search_users('TimHortons', 1)
print(json.dumps(users[0]._json))
如果对象有 _json,则使用 json.dumps(users[0]._json)。用户只是一个例子。
【讨论】: