From 5fbb8556ce643c3d456218ecf0dc74bce1c34527 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 9 Jul 2026 19:42:13 +0530 Subject: [PATCH] refactor: simplify SQLAlchemy instance handling in jsonable_encoder by delegating to recursive calls --- fastapi/encoders.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/fastapi/encoders.py b/fastapi/encoders.py index fab66b6d6..741bcf7fe 100644 --- a/fastapi/encoders.py +++ b/fastapi/encoders.py @@ -268,13 +268,12 @@ def jsonable_encoder( exclude_none=exclude_none, exclude_defaults=exclude_defaults, ) - if not sqlalchemy_safe: - return obj_dict - return { - k: v - for k, v in obj_dict.items() - if not (isinstance(k, str) and k.startswith("_sa")) - } + return jsonable_encoder( + obj_dict, + exclude_none=exclude_none, + exclude_defaults=exclude_defaults, + sqlalchemy_safe=sqlalchemy_safe, + ) if dataclasses.is_dataclass(obj): assert not isinstance(obj, type) obj_dict = dataclasses.asdict(obj)