我正在尝试将从api接收的数据保存为json格式的文件。
response = requests.get(url_league, headers= header)
type(response)
#output requests.models.Response
with open("json.txt", "w+") as f:
data = json.dump(response, f)
当我尝试将响应对象保存到文件时,出现以下错误
Object of type Response is not JSON serializable
我读到json模块在编码复杂对象方面存在问题,为此json中的默认功能是对复杂对象进行编码。我尝试了以下代码
json_data = json.dump(response.__dict__, f, default = lambda o: o.__dict__, indent=4)
并出现以下错误
bytes' object has no attribute '__dict__'
此错误是什么意思以及如何解决?
答案 0 :(得分:0)
您收到的错误意味着响应的类型为“字节”,而不是text / JSON。您需要先解码响应(需要urllib或urllib2)。
import json
import urllib.request
response=urllib.request.urlopen(url_league).read()
string = response.decode('utf-8')
json_obj = json.loads(string)
with open("json.txt", "w+") as f:
data = json.dump(json_obj, f)
要使用标题,您只需使用
req = Request(url)
req.add_header('apikey', 'xxx')