You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 01:50:25