Python 覆盖FastAPI中JSU编码器的默认编码器

Python 覆盖FastAPI中JSU编码器的默认编码器,python,fastapi,Python,Fastapi,我有这样的代码,使用: 问题是,jsu编码器在默认值之后应用自定义编码器。有没有办法在默认编码器之前应用它们。因为对于Enum和任何派生类,都会报告Enum的值而不是映射值。现在我在json.dumps中使用自定义编码器,如下所示: class TestEncoder(JSONEncoder): def default(self, obj): if isinstance(obj, EnumTestT): return TestEncoder.pro

我有这样的代码,使用:


问题是,
jsu编码器
在默认值之后应用自定义编码器。有没有办法在默认编码器之前应用它们。因为对于
Enum
和任何派生类,都会报告Enum的值而不是映射值。

现在我在
json.dumps中使用自定义编码器,如下所示:

class TestEncoder(JSONEncoder):
    def default(self, obj):
        if isinstance(obj, EnumTestT):
            return TestEncoder.process_enum_test_t(obj)

FastAPI应用程序中的响应是:

json_str = json.dumps(json_list, cls=TestEncoder).encode('utf-8')
return Response(media_type="application/json", content=json_str)

使用自定义编码器的FastAPI的问题在于,在调用所有标准编码器之后,会调用自定义编码器,并且无法覆盖该顺序。

你的意思是什么?@lsabi不确定我是否理解这个问题。我的意思是如果你需要链接中所示的内容。您可以返回一个您自己准备的响应,而不需要通过JSO_encoder@lsabi我有一个dict,我在代码中简单地表示了它。对象更复杂,需要进行编码。因此,我要么自己编写一个完全定制的编码器,我想避免使用它,要么使用
jsonable_encoder
,但我似乎不能做的一件事是为枚举提供一个助记符而不是一个数值。是的,但是如果你试图用json.dumps(我的_对象)序列化你的对象,它会返回期望的结果吗?在这种情况下,您可以直接返回该结果,而不是通过fastapi的JSU编码器
json_str = json.dumps(json_list, cls=TestEncoder).encode('utf-8')
return Response(media_type="application/json", content=json_str)