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

Python读取大型JSON文件的新方法?2010年后高效方案探讨

处理大型JSON文件的高效方案

1. 用标准库实现流式解析

Python标准库的json模块支持流式解码,不用一次性把整个文件加载到内存,从根源避免内存溢出导致的崩溃。核心用JSONDecoder.raw_decode()方法逐段解析:

import json

def stream_large_json(file_path, target_key):
    decoder = json.JSONDecoder()
    with open(file_path, 'r', encoding='utf-8') as f:
        buffer = ''
        for line in f:
            buffer += line.strip()
            while buffer:
                try:
                    obj, idx = decoder.raw_decode(buffer)
                    if target_key in obj:
                        # 遍历目标数组,替换成你的业务逻辑
                        for item in obj[target_key]:
                            print(item)
                    buffer = buffer[idx:]
                except ValueError:
                    # 缓冲区内容不完整,继续读取下一行
                    break

# 针对你的场景,读取'item'节点数据
stream_large_json('../Data/response.json', 'item')

2. 用第三方库ijson快速解析

ijson是专门为大型JSON设计的流式解析库,语法更简洁,性能表现更优。先安装依赖:

pip install ijson

结合你的JSON结构,直接定位到item节点读取数据:

import ijson

with open('../Data/response.json', 'r', encoding='utf-8') as f:
    # 'item.item'是JSONPath语法,定位根节点下item数组的每个元素
    for item in ijson.items(f, 'item.item'):
        # 处理单个item数据
        print(item)

3. 额外内存优化技巧

  • 打开文件时显式指定编码,避免默认编码转换带来的额外内存开销
  • 若仅需item数据,解析时可跳过version字段的加载,进一步减少内存占用
  • 处理完临时数据后,用del关键字及时释放变量内存

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:41:41