Python 多个GET请求,将json响应合并到一个数组或json对象中

Python 多个GET请求,将json响应合并到一个数组或json对象中,python,json,python-requests,Python,Json,Python Requests,我正在运行一个get请求,它以json格式返回一些数据,同时还为我提供下一页数据的下一个url。我运行了一个while循环来获取所有数据,但希望将每个新页面数据附加到现有对象。最后,我想要一个大的json对象或数组 这是到目前为止我的代码,我不认为append是正确的选择,因为它在数组中为每个页面创建索引。相反,我想要一个索引或一个json对象,将所有数据合并在一起 host = 'https://xxxxx.com/api/v1/users' headers = {'Accept': 'ap

我正在运行一个get请求,它以json格式返回一些数据,同时还为我提供下一页数据的下一个url。我运行了一个while循环来获取所有数据,但希望将每个新页面数据附加到现有对象。最后,我想要一个大的json对象或数组

这是到目前为止我的代码,我不认为append是正确的选择,因为它在数组中为每个页面创建索引。相反,我想要一个索引或一个json对象,将所有数据合并在一起

host = 'https://xxxxx.com/api/v1/users'

headers = {'Accept': 'application/json', 'Content-Type': 'application/json',
           'Authorization': 'xxxxx'}

response = requests.get('{}'.format(host), 
                            headers = headers)
alist = []
keep_running = True
while keep_running:

    json_response = response.json()
    alist.append(json_response)
    host = response.links['next']['url']
    response = requests.get('{}'.format(host), 
                        headers = headers)    
    keep_running = response.status_code == requests.codes.ok and 'next' in response.links.keys()
每页有200个对象,约18页。我得到一个长度为18的数组,每个索引中有200个对象。理想情况下,长度为18*200=3600的数组是我想要的


我可以使用pandas实现创建数据帧/表,但是,我也希望使用原始json。非常感谢您的任何想法或帮助。

我不确定您的数据实际上是什么样子的。但是,您可以将json对象作为python对象加载。追加所有数据,然后将其转换回json字符串

像这样:

import json


...
alist = []
keep_running = True
while keep_running:

    json_response = response.json()
    alist.append(json.loads(json_response))
    host = response.links['next']['url']
    response = requests.get('{}'.format(host), 
                        headers = headers)    
    keep_running = response.status_code == requests.codes.ok and 'next' in response.links.keys()


json_string = json.dumps(alist)
假设您的json_响应是一个列表,它看起来像是list.extend。因此,使用alist.extendjson_响应代替alist.appendjson_响应

追加-将项目添加到列表的末尾

extend-通过追加iterable中的所有项来扩展列表

例如:

x=[1,2] x、 追加[3,4]给出[1,2,3,4]] x、 扩展[3,4]给出[1,2,3,4]