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

如何去除Python中JSON分页写入文件的多余方括号?

解决JSON分页数据写入时的多余方括号问题

你的问题出在每次直接把分页返回的整个数组(带[])追加写入文件,最后文件里是[...][...]这种多个数组拼在一起的非法格式,没法当成一个完整的大数组解析。给你两种可行的解决办法:

方法一:先收集所有数据再写入(适合内存足够的情况)

把每一页的数据都合并到同一个列表里,最后一次性写入成完整的JSON数组:

import requests
import json

all_data = []
page = 0
baseurl = "你的基础API地址"
headers = {}  # 替换成你的实际请求头

while True:
    response = requests.get(baseurl + f"&skip={page}", headers=headers)
    current_page_data = response.json()
    # 返回空数组说明没有更多数据了
    if not current_page_data:
        break
    # 将当前页的所有元素追加到总列表
    all_data.extend(current_page_data)
    page += 1000

# 一次性写入完整的大数组
with open('filepath', 'w', encoding='utf-8') as f:
    json.dump(all_data, f, ensure_ascii=False, indent=4)

方法二:边写边处理(适合数据量极大、内存不够的情况)

如果数据太大没法全部存到内存,就手动控制文件格式:先写大数组的开头,逐页写入单个元素,最后补全数组结尾:

import requests
import json

page = 0
baseurl = "你的基础API地址"
headers = {}  # 替换成你的实际请求头

with open('filepath', 'w', encoding='utf-8') as f:
    # 先写大数组的左括号
    f.write('[\n')
    is_first_page = True
    while True:
        response = requests.get(baseurl + f"&skip={page}", headers=headers)
        current_page_data = response.json()
        if not current_page_data:
            break
        
        if not is_first_page:
            # 非第一页先写逗号,和前一页元素分隔
            f.write(',\n')
        
        # 遍历当前页的每个元素,逐个写入(不带外层方括号)
        for index, item in enumerate(current_page_data):
            if index != 0:
                # 同一页内元素间加逗号分隔
                f.write(',\n')
            json.dump(item, f, ensure_ascii=False, indent=4)
        
        is_first_page = False
        page += 1000
    
    # 补全大数组的右括号
    f.write('\n]')

两种方法都能生成合法的单个JSON大数组,你可以根据数据量大小选择对应方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:20:29