如何使用Pydantic设置自定义JSON参数名称?
使用Pydantic修改JSON输出的键名
要实现将输入JSON中的model键在输出时替换为自定义名称changed_key,可以利用Pydantic的字段别名功能,以下分版本给出实现方式:
Pydantic v2 实现
from pydantic import BaseModel, Field # 定义模型:指定输入JSON的"model"键映射到模型的"changed_key"字段 class MyModel(BaseModel): changed_key: str = Field(validation_alias="model") weight: str # 模拟来自数据库的输入数据 input_data = { "model": "Example", "weight": "1" } # 解析输入为模型实例 model_instance = MyModel.model_validate(input_data) # 序列化模型得到目标JSON结构 output_data = model_instance.model_dump() print(output_data) # 输出:{'changed_key': 'Example', 'weight': '1'}
通过validation_alias指定输入键与模型字段的映射关系,序列化时直接输出模型字段名,无需额外参数即可得到目标结构。
Pydantic v1 实现
from pydantic import BaseModel, Field class MyModel(BaseModel): changed_key: str = Field(alias="model") weight: str class Config: allow_population_by_field_name = True input_data = { "model": "Example", "weight": "1" } # 解析输入数据 model_instance = MyModel.parse_obj(input_data) # 序列化时指定输出别名对应键 output_data = model_instance.json(by_alias=True) print(output_data) # 输出:{"changed_key": "Example", "weight": "1"}
在v1版本中通过Field(alias)设置别名,同时开启allow_population_by_field_name确保输入解析兼容;序列化时通过by_alias=True触发别名输出。
内容的提问来源于stack exchange,提问作者velovatik
相关产品推荐
相关产品推荐

