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

如何将Scoresaber API多页JSON数据合并为单个JSON输出

解决Scoresaber API多页数据合并问题

问题原因

你的代码使用api.update()方法时,每次请求分页返回的字典中,leaderboards键会直接覆盖之前的同名键值,这是字典的更新特性导致的,因此最终只保留了最后一页的数据。

修正后的代码

import requests
import math
import json

# 获取元数据并计算总页数
response = requests.get("https://scoresaber.com/api/leaderboards?qualified=true&withMetadata=true")
initial_data = json.loads(response.text)
total_items = initial_data['metadata']['total']
items_per_page = initial_data['metadata']['itemsPerPage']
total_pages = math.ceil(total_items / items_per_page)

# 初始化列表存储所有leaderboards条目
all_leaderboards = []

# 遍历所有分页收集数据
for page in range(1, total_pages + 1):
    page_response = requests.get(f"https://scoresaber.com/api/leaderboards?qualified=true&page={page}")
    page_data = json.loads(page_response.text)
    # 将当前页的leaderboards条目追加到总列表
    all_leaderboards.extend(page_data['leaderboards'])

# 构建最终的合并结果
final_result = {
    "leaderboards": all_leaderboards,
    "metadata": {
        "total": total_items,
        "itemsPerPage": items_per_page,
        "mergedPages": total_pages
    }
}

# 输出格式化JSON
print(json.dumps(final_result, indent=4))

代码说明

  • 用列表all_leaderboards累积所有分页的条目,通过extend()方法将每页的leaderboards元素逐一添加,避免字典覆盖问题。
  • 最终结果保留了合并后的完整leaderboards列表,同时保留总数据量、每页条数、合并页数等元信息。
  • 拆分了元数据获取和数据收集的逻辑,代码结构更清晰,也避免了原代码中变量重复赋值的问题。

内容的提问来源于stack exchange,提问作者miitchel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:10:29