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

如何使用Python以流式方式验证JSON与JSON Schema的一致性(无需加载整个对象到内存)

如何使用Python以流式方式验证JSON与JSON Schema的一致性(无需加载整个对象到内存)

我有一个很大的JSON文件,不想把它全部加载到内存里,希望能以流式的方式验证它是否符合JSON Schema。目前我找到的库,比如Pydantic或者jsonschema,都只能验证完全加载到内存的JSON对象。我需要的是一种可以分块喂入原始JSON数据、能控制缓冲区大小的验证方式。

我设想的实现方式大概是这样的:

import pydantic  # 我用的是V2版本
import ijson
import pathlib

class A(pydantic.BaseModel):
    i: int
    a: list[int]
    s: str

jsonpath = pathlib.Path("some.json")
validator = MyValidator(schema=A.model_json_schema())
with jsonpath.open("rb") as file:
    for prefix, event, value in ijson.parse(file, use_float=True):
        validator.event((prefix, event, value))

print(validator.errors)

假设some.json是一个约50MB的A实例,里面包含一个非常长的数组。我不想把整个对象加载到内存(这是Pydantic默认的做法),但要确保这个JSON文件符合A的Schema。validator.errors可以返回错误列表,如果没有错误的话就是空列表。

[编辑于2025-01-31]
这里的“流式方式”指的是每个事件只会被处理一次,无法回头重新处理。不过如果有需要多次扫描文件的验证方案,我也可以接受——比如示例里允许对文件进行多次扫描。

备注:内容来源于stack exchange,提问作者Anton Daneyko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 15:12:58