diff --git a/fastapi/encoders.py b/fastapi/encoders.py index 369defe0f2267..f64e4b86ea3b4 100644 --- a/fastapi/encoders.py +++ b/fastapi/encoders.py @@ -71,7 +71,7 @@ def jsonable_encoder( sqlalchemy_safe=sqlalchemy_safe, ) if dataclasses.is_dataclass(obj): - obj_dict = dataclasses.asdict(obj) + obj_dict = dataclasses.asdict(obj) return jsonable_encoder( obj_dict, exclude_none=exclude_none, diff --git a/tests/test_serialize_response_dataclass.py b/tests/test_serialize_response_dataclass.py index 8583fac1aadd5..1e3bf3b28bcc3 100644 --- a/tests/test_serialize_response_dataclass.py +++ b/tests/test_serialize_response_dataclass.py @@ -1,8 +1,9 @@ -from typing import List, Optional +from dataclasses import dataclass from datetime import datetime +from typing import List, Optional + from fastapi import FastAPI from fastapi.testclient import TestClient -from dataclasses import dataclass app = FastAPI() @@ -172,7 +173,22 @@ def test_no_response_model_objectlist(): response = client.get("/items/no-response-model/objectlist") response.raise_for_status() assert response.json() == [ - {"name": "foo", "date": datetime(2021, 7, 26).isoformat(), "price": None, "owner_ids": None}, - {"name": "bar", "date": datetime(2021, 7, 26).isoformat(), "price": 1.0, "owner_ids": None}, - {"name": "baz", "date": datetime(2021, 7, 26).isoformat(), "price": 2.0, "owner_ids": [1, 2, 3]}, + { + "name": "foo", + "date": datetime(2021, 7, 26).isoformat(), + "price": None, + "owner_ids": None, + }, + { + "name": "bar", + "date": datetime(2021, 7, 26).isoformat(), + "price": 1.0, + "owner_ids": None, + }, + { + "name": "baz", + "date": datetime(2021, 7, 26).isoformat(), + "price": 2.0, + "owner_ids": [1, 2, 3], + }, ]