【Python】Pydantic多字段映射到一个字段

背景

在开发过程中,由于上游数据结构不确定,或者数据结构确定,但大部分相同,部分字段不同(含义相同的情况)

如有时上游给到数据叫【id】,有时叫【code】,为了兼容这种情况,减少coding,我们可以通过Pydantic来解决该问题。

解决方案

旧版本处理方案

python 复制代码
class Foo(BaseModel):
    id: int =Field(..., alias="item_id")
    field1: str
    ...
    
    class Config:
        allow_population_by_field_name = True
# 结果验证
Foo.parse_obj({"item_id": 123, "field1": "value1"})
Foo.parse_obj({"id": 234, "field1": "value1"})

新版本处理方案

参考官方

python 复制代码
class Foo(BaseModel):
    id: int =Field(..., alias="item_id")
    field1: str
    ...
    
    class Config:
        populate_by_name = True

# 或者
class Foo(BaseModel):
    model_config = ConfigDict(populate_by_name=True)
    id: int =Field(..., alias="item_id")
    field1: str
    ...
# 结果验证
Foo.model_validate({"item_id": 123, "field1": "value1"})
Foo.model_validate({"id": 234, "field1": "value1"})
相关推荐
羸弱的穷酸书生9 分钟前
国网 i1协议 python实现
开发语言·python
weixin_4620223510 分钟前
RAW-Adapter: Adapting Pre-trained Visual Model to Camera RAW Images
python·计算机视觉
电子硬件笔记11 分钟前
Python语言编程导论第三章 编写程序
开发语言·python·编辑器
布谷歌11 分钟前
在java中实现c#的int.TryParse方法
java·开发语言·python·c#
B站计算机毕业设计之家1 小时前
基于大数据热门旅游景点数据分析可视化平台 数据大屏 Flask框架 Echarts可视化大屏
大数据·爬虫·python·机器学习·数据分析·spark·旅游
周纠纠1 小时前
附录1:中文切词
python
Cricyta Sevina1 小时前
Java Collection 集合进阶知识笔记
java·笔记·python·collection集合
零度@2 小时前
Java中Map的多种用法
java·前端·python
550A2 小时前
如何修改kagglehub的数据集默认下载路径
python