如何在Python中将多页API返回的JSON对象列表合并保存为JSON文件
解决方法
首先明确两个错误的核心原因:
final_data如果是列表类型,不能用update()方法(这是字典专属方法),列表合并应该用extend()r.json()已经将API返回的JSON字符串解析成了Python列表,不需要再用json.loads()(这个函数仅处理字符串/字节类型的JSON数据)
正确的实现代码如下:
import requests import json # 初始化存储所有结果的空列表 final_data = [] # 初始请求URL,替换为你的API入口地址 current_url = "你的初始API地址" headers = {"你的请求头参数"} while current_url is not None: # 发送API请求 r = requests.get(current_url, verify=False, allow_redirects=True, headers=headers, timeout=10) # 解析响应为Python对象 response_data = r.json() # 将当前页的results元素逐个添加到总列表 final_data.extend(response_data["results"]) # 更新下一页的请求URL current_url = response_data["next"] # 将聚合后的结果写入JSON文件 with open("all_results.json", "w", encoding="utf-8") as f: json.dump(final_data, f, ensure_ascii=False, indent=4)
关键细节说明:
- 使用
extend()而非update():extend()会把当前页results里的每个对象逐个追加到总列表,避免出现嵌套列表的问题 - 跳过
json.loads():r.json()已经完成了JSON字符串到Python对象的转换,直接使用解析后的结果即可 - 循环逻辑优化:初始
current_url设为API入口,每次循环后自动更新为下一页地址,当next为null(对应Python的None)时终止循环 - 保存文件参数:
ensure_ascii=False支持中文内容,indent=4让生成的JSON文件格式更易读
内容的提问来源于stack exchange,提问作者Zodi
相关产品推荐
相关产品推荐

