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

如何配置Pydantic在FastAPI接口中返回十六进制颜色?

解决方案

要让Pydantic序列化Color字段时返回十六进制格式而非命名颜色,有两种简洁的实现方式:

方法一:通过模型Config配置JSON编码器

直接在MyModel中添加Config类,指定Color类型的序列化逻辑:

from pydantic import BaseModel
from pydantic.color import Color

class MyModel(BaseModel):
    color: Color

    class Config:
        # 自定义Color类型的JSON序列化规则
        json_encoders = {
            Color: lambda color: color.hex()
        }

Color对象自带的hex()方法会返回带#前缀的十六进制字符串(例如#000000),如果需要强制小写/大写格式,可以改用color.hex_l()(小写)或color.hex_u()(大写)。

方法二:自定义Color字段(进阶场景)

如果需要全局统一处理Color的序列化,可自定义一个继承自Color的字段类,重写其序列化方法:

from pydantic import BaseModel
from pydantic.color import Color

class HexColor(Color):
    def __json__(self, *args, **kwargs) -> str:
        return self.hex()

class MyModel(BaseModel):
    color: HexColor

这种方式适合需要在多个模型中复用相同序列化规则的场景。

验证效果

配置完成后,FastAPI返回的响应会自动将Color字段转为十六进制格式,例如:

{
  "color": "#000000"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:57:28