news 2026/6/10 16:19:43

使用 Pydantic 与 JSON Schema 验证 JSONL

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用 Pydantic 与 JSON Schema 验证 JSONL

在处理大规模结构化数据时,尤其是以 JSON Lines(.jsonl)格式存储的数据,确保每条记录符合预期结构是数据质量保障的关键一步。本文将围绕一个典型的复杂嵌套 JSON 结构,详细介绍如何使用 Python 中两种主流的数据验证工具——Pydantic 和 JSON Schema——来实现高效、可靠的校验,并对二者进行系统性对比,帮助开发者根据实际需求做出合理选择。

一、问题背景:复杂的嵌套 JSON 结构

考虑以下代表个人简历信息的 JSON 对象:

{"person":{"name":"张伟","age":30,"gender":"男","occupation":"软件工程师","contact":{"email":"zhangwei@example.com","phone":"123-456-7890"},"address":{"street":"幸福路123号","city":"上海市","state":"上海市","zip":"200000"},"education":[{"degree":"学士","major":"计算机科学","university":"北京大学","year":2015}],"work_experience":[{"company":"ABC科技有限公司","position":"软件开发工程师","duration":"2018-2020","responsibilities":["参与多个项目的软件开发工作","负责后端服务的设计和实现"]}],"skills":["Java","Python","数据库设计"],"interests":["阅读","旅行","编程"]}}

该结构包含多层嵌套对象、非空数组、以及对数组元素内部结构的约束。我们的目标是:验证 .jsonl 文件中的每一行是否严格符合此结构,包括字段存在性、类型正确性、以及业务规则(如教育经历至少有一条)。

二、方案一:使用 Pydantic(v2)

Pydantic 是一个基于 Python 类型注解的数据验证和设置管理库,特别适合在 Python 原生环境中定义数据模型。

1. 定义嵌套模型

frompydanticimportBaseModel,FieldclassContact(BaseModel):email:strphone:strclassAddress(BaseModel):street:strcity:strstate:strzip:strclassEducationItem(BaseModel):degree:strmajor:struniversity:stryear:intclass
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 22:21:48

基于Springboot+Vue的校园设备维护报修系统源码文档部署文档代码讲解等

课题介绍 本课题旨在设计并实现一套基于SpringBootVue的前后端分离校园设备维护报修系统,解决校园内设备故障报修流程繁琐、维修进度不透明、设备信息管理混乱、维修资源调配不合理等问题。系统采用SpringBoot作为后端核心框架,结合MyBatis-Plus简化数据…

作者头像 李华
网站建设 2026/6/10 11:40:40

基于Springboot+Vue的校园家教信息平台的设计源码文档部署文档代码讲解等

课题介绍 本课题旨在设计并实现一套基于SpringBootVue的前后端分离校园家教信息平台,解决校园内家教需求与供给信息不对称、交易流程不规范、信息审核不严格等问题。系统采用SpringBoot作为后端核心框架,结合MyBatis-Plus简化数据操作,搭配Vu…

作者头像 李华
网站建设 2026/6/10 11:35:17

基于Springboot+Vue的校园信息共享系统源码文档部署文档代码讲解等

课题介绍 本课题旨在设计并实现一套基于SpringBootVue的前后端分离校园信息共享系统,解决校园内各类信息分散杂乱、传播效率低、信息审核不规范、师生获取精准信息不便等问题。系统采用SpringBoot作为后端核心框架,结合MyBatis-Plus简化数据操作&#xf…

作者头像 李华
网站建设 2026/6/10 11:39:11

使用 Zensical 快速搭建静态博客网站(类似Hugo、Hexo)

从零到一,快速搭建你的 Zensical 博客 Zensical 官方网站: https://zensical.org/ Zensical 官方文档: https://zensical.org/docs/ 第一步:环境准备 检查 Python 版本 Zensical 需要 Python 3.8 或更高版本。首先检查你的 Python 版本: …

作者头像 李华
网站建设 2026/6/10 11:36:04

大数据毕设项目:基于Hadoop的某篮球队各个球员数据分析系统的设计与实现(源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/10 11:38:05

基于opencv与深度学习Deeplab舌苔分割检测代码及教程 深度学习图像分割 舌苔分割图像数据集

深度学习Deeplab舌苔分割检测代码及教程 引言 舌苔分割是中医诊断中的一个重要环节,通过对舌苔的分析可以辅助医生了解患者的健康状况。近年来,深度学习技术在医学图像处理领域取得了显著进展,Deeplab系列模型因其卓越的分割性能而被广泛应…

作者头像 李华