mirror of https://github.com/tiangolo/fastapi.git
Update behaviour for named tuples
This commit is contained in:
parent
da3a758974
commit
ad20536712
|
|
@ -206,6 +206,18 @@ def jsonable_encoder(
|
|||
"""
|
||||
),
|
||||
] = True,
|
||||
named_tuple_as_dict: Annotated[
|
||||
bool,
|
||||
Doc(
|
||||
"""
|
||||
Whether to encode named tuples as dicts instead of lists.
|
||||
|
||||
This is useful when you want to preserve the field names of named tuples
|
||||
in the JSON output, which can make it easier to understand and work with
|
||||
the data on the client side.
|
||||
"""
|
||||
),
|
||||
] = False,
|
||||
) -> Any:
|
||||
"""
|
||||
Convert any object to something that can be encoded in JSON.
|
||||
|
|
@ -323,6 +335,19 @@ def jsonable_encoder(
|
|||
)
|
||||
return encoded_list
|
||||
|
||||
if named_tuple_as_dict and getattr(obj, "_asdict", None) is not None and callable(obj._asdict):
|
||||
return jsonable_encoder(
|
||||
obj._asdict(),
|
||||
include=include,
|
||||
exclude=exclude,
|
||||
by_alias=by_alias,
|
||||
exclude_unset=exclude_unset,
|
||||
exclude_defaults=exclude_defaults,
|
||||
exclude_none=exclude_none,
|
||||
custom_encoder=custom_encoder,
|
||||
sqlalchemy_safe=sqlalchemy_safe,
|
||||
)
|
||||
|
||||
if type(obj) in ENCODERS_BY_TYPE:
|
||||
return ENCODERS_BY_TYPE[type(obj)](obj)
|
||||
for encoder, classes_tuple in encoders_by_class_tuples.items():
|
||||
|
|
|
|||
Loading…
Reference in New Issue