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

如何在使用json.load()加载大JSON文件时提取指定键值对?

提取大JSON文件中的特定键值对

方案1:全量加载后提取(内存充足时用)

如果你的JSON是一个包含所有观测的数组(比如[{"name":"John", "rollno":4}, ...]),直接加载后用列表推导式筛选即可:

import json

# 打开文件并加载全部数据
with open('your_large_file.json', 'r') as f:
    full_data = json.load(f)

# 提取所有rollno值(仅保留数值)
rollno_values = [item['rollno'] for item in full_data]

# 或者保留键值对结构
rollno_entries = [{'rollno': item['rollno']} for item in full_data]

方案2:流式解析(内存紧张时用)

如果文件过大,一次性加载会占用过多内存,用流式解析逐段处理,避免全量加载整个文件:

import json

rollno_list = []
decoder = json.JSONDecoder()

with open('your_large_file.json', 'r') as f:
    buffer = ''
    for line in f:
        buffer += line.strip()
        # 循环解析缓冲区中的完整JSON对象
        while buffer:
            try:
                obj, parse_idx = decoder.raw_decode(buffer)
                if 'rollno' in obj:
                    rollno_list.append(obj['rollno'])
                    # 如需保留键值对:rollno_list.append({'rollno': obj['rollno']})
                # 截断缓冲区,处理剩余内容
                buffer = buffer[parse_idx:].strip()
            except json.JSONDecodeError:
                # 缓冲区内容不完整,继续读取下一行
                break

特殊情况:JSON Lines格式

如果你的文件是每行一个独立JSON对象(即JSON Lines格式),直接逐行解析更高效:

import json

rollno_list = []
with open('your_large_file.jsonl', 'r') as f:
    for line in f:
        obj = json.loads(line)
        rollno_list.append(obj['rollno'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:48:22