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

Python3如何增量分段解析JSON 仅提取第一层或指定键对应值

Python3 逐层级/按需解析JSON方案

场景1:仅提取指定顶级键对应的值(适合超大JSON文件)

优先使用第三方流式JSON解析库ijson,它采用增量解析逻辑,不需要将整个JSON加载到内存,仅解析你指定路径对应的数据段,内存占用极低。

  1. 安装依赖:
pip install ijson
  1. 代码示例:
import ijson
import json

# 直接从文件流解析,无需读取全量文件内容
with open("your_large_json.json", "rb") as f:
    # 提取顶级键fruits对应的值,解析到这部分后就会停止后续解析
    fruits_value = next(ijson.items(f, "fruits"))
    # 如果你需要该值对应的原始JSON字符串,直接序列化即可
    fruits_raw_json = json.dumps(fruits_value)

如果需要提取更深层级的内容,修改路径参数即可,比如提取fruits下的apple列表,路径改为fruits.apple即可。

注意:如果你的JSON文件体积过大无法一次性读入内存,优先选择本流式解析方案。

场景2:解析第一层所有键,对应值保留原始JSON字符串

如果你需要拿到第一层的所有键,且值保留未解析的原始JSON格式,可以基于标准库json的底层raw_decode方法实现,不需要额外安装依赖:

import json

def parse_first_level(json_str: str) -> dict:
    decoder = json.JSONDecoder()
    pos = 0
    result = {}
    # 匹配开头空白和左大括号
    pos = json.decoder.WHITESPACE.match(json_str, pos).end()
    if json_str[pos] != "{":
        raise ValueError("仅支持顶级为对象的JSON")
    pos += 1
    while True:
        pos = json.decoder.WHITESPACE.match(json_str, pos).end()
        if json_str[pos] == "}":
            break
        # 解析键
        key, pos = decoder.raw_decode(json_str, pos)
        # 跳过冒号和前后空白
        pos = json.decoder.WHITESPACE.match(json_str, pos).end()
        if json_str[pos] != ":":
            raise ValueError("JSON格式错误,缺少键后的冒号")
        pos += 1
        pos = json.decoder.WHITESPACE.match(json_str, pos).end()
        # 记录值的起始位置,解析值得到结束位置后截取原始字符串
        value_start = pos
        _, pos = decoder.raw_decode(json_str, pos)
        result[key] = json_str[value_start:pos].strip()
        # 跳过逗号和空白
        pos = json.decoder.WHITESPACE.match(json_str, pos).end()
        if pos < len(json_str) and json_str[pos] == ",":
            pos += 1
    return result

测试示例:

test_json = '''{"fruits":
    {"apple": ["golden delicious","pink lady","gala"],
     "mango": ["kent", "alfonso"]},
 "vegetables":
    ["onions", "carrots", "celery"]
}'''
print(parse_first_level(test_json))

输出结果和你预期的结构完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:51:04