我想创建使用 api 生成一些数据/统计数据的程序。
Api有32个页面,所以我必须迭代,将页面添加到列表中,在获取所有页面后,我想将列表中的元素转换为一个大对象并对其进行操作。
因此,要从 API 获取数据并将其存储在我的列表中:
response = []
for i in range(1,32):
url = "https://api.dane.gov.pl/resources/17201/data?page="+str(i)
response.append(requests.get(url).json)
我尝试使用 json.loads()、json.dumps() 但没有任何效果。有什么解决方案可以解决这个问题吗?
编辑: 当我收集我的回复并使用时:
valid = json.dumps(response)
print(valid)
我收到错误: “method”类型的对象不可 JSON 序列化
最佳答案
尝试:
import json
def collect_responses(num_of_pages):
response = []
for i in range(1, num_of_pages):
url = "https://api.dane.gov.pl/resources/17201/data?page="+str(i)
response.append(requests.get(url).json())
return response
valid = json.dumps({"responseList": collect_responses(32)}
或者以更一般的方式:
def paginate_while_200(url_template_missing_pagenum):
list_of_json_response = []
i = 1
while True:
response = requests.get(url % i)
if response.status == 200:
try:
list_of_json_response.append(response.json())
i += 1
finally:
return list_of_json_response
else:
return list_of_json_response
url = "https://api.dane.gov.pl/resources/17201/data?page=%d"
json.dumps({"responseList": paginate_while_200(url)})
关于python - 将 JSON 页面列表转换为一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56207437/