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

如何在Pydantic中校验含空格的JSON键?

解决带空格JSON键的Pydantic模型映射问题

你可以通过**字段别名(Alias)**直接映射JSON中带空格的键,无需修改原始JSON数据,具体实现分Pydantic版本如下:

Pydantic v2(当前主流版本)

使用Field的alias参数指定JSON中的键名,即可直接匹配带空格的字段:

from pydantic import BaseModel, Field

class MyModel(BaseModel):
    # 用alias指定JSON里的"my key"键
    my_key: int = Field(alias="my key")

my_dict = {"my key": 1}
# 直接初始化模型,完全兼容带空格的键
instance = MyModel(**my_dict)
print(instance.my_key)  # 输出: 1

# 如果需要序列化回带空格的键,使用by_alias=True
print(instance.model_dump(by_alias=True))  # 输出: {"my key": 1}

如果希望模型同时支持字段名(my_key)和别名(my key)两种输入,可添加populate_by_name=True配置:

class MyModel(BaseModel):
    my_key: int = Field(alias="my key")
    
    model_config = {"populate_by_name": True}

# 两种输入方式都能生效
instance1 = MyModel(**{"my key": 1})
instance2 = MyModel(**{"my_key": 1})

Pydantic v1(旧版本)

写法略有不同,在Config类中配置allow_population_by_field_name:

from pydantic import BaseModel, Field

class MyModel(BaseModel):
    my_key: int = Field(alias="my key")
    
    class Config:
        allow_population_by_field_name = True

my_dict = {"my key": 1}
instance = MyModel(**my_dict)

原理说明

  • alias参数直接建立模型字段与JSON带空格键的映射关系;
  • 配置populate_by_name(v2)或allow_population_by_field_name(v1)是为了同时兼容字段名和别名的输入,若仅需匹配带空格的键,可省略该配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:39:18