将JSON页面列表转换为一个对象

时间:2019-05-19 11:43:19

标签: python json

我想创建一个使用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序列化

1 个答案:

答案 0 :(得分:1)

尝试:

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)})