Использование Pydantic сегодня стало нормой, и это правильно. Но иногда на ревью вижу, что используют его не всегда корректно.
Например, метод BaseModel.model_dump() по умолчанию не преобразует стандартные типы, такие как datetime, UUID или Decimal, в простой сериализуемый для JSON вид. Тогда пишут кастмоный сериализатор для этих типов чтобы функция json.dump() не падала с ошибкой.
import uuid
from datetime import datetime
from decimal import Decimal
from uuid import UUID
from pydantic import BaseModel
class MyModel(BaseModel):
id: UUID
date: datetime
value: Decimal
obj = MyModel(
id=uuid.uuid4(),
date=datetime.now(),
value='1.23'
)
print(obj.model_dump())
# не подходит для json.dump
# {
# 'id': UUID('4f8c1bc4-25fd-40cd-9dbe-2c73639b0dc1'),
# 'date': datetime.datetime(2025, 12, 12, 12, 12, 12, 111111),
# 'value': Decimal('1.23')
# }
# добавляем свой кастомный сериализатор
json.dumps(obj.model_dump(), cls=MySerializer)
# {
# 'id': '4f8c1bc4-25fd-40cd-9dbe-2c73639b0dc1',
# 'date': '2025-12-12T12:12:12.111111',
# 'value': '1.23'
# }
В данном случае класс MySerializer обрабатывает datetime, UUID и Decimal. Например так:
class MySerializer(json.JSONEncoder):
def default(self, o):
if isinstance(o, Decimal):
return str(o)
elif isinstance(o, datetime):
return o.isoformat()
elif isinstance(o, UUID):
return str(o)
return super().default(o)
Специально для тех, кто всё еще так делает - в этом нет необходимости!
Pydantic может это сделать сам, просто нужно добавить параметр mode="json".
json.dumps(obj.model_dump(mode="json"))
# {
# 'id': '4f8c1bc4-25fd-40cd-9dbe-2c73639b0dc1',
# 'date': '2012-12-12T12:12:12.111111',
# 'value': '1.23'
# }
#pydantic#libs
Bakemono no Ko
aka The Boy and the Beast | El Niño y la Bestia | バケモノの子
🗓Año 2015
⏱️Duración 119min.
País🇯🇵Japón
🎥Dirección#MamoruHosoda
📄Guion Mamoru Hosoda
🎼Música Takagi Masakatsu
🎬Productora Studio Chizu, Nippon TV
Género#Animación#Fantástico#Amistad#Monstruos#Familia
Reparto | Trailer | Sinopsis | Premios
Ver Aquí
AnexoAnimación | Fantasía | Familia | Premiadas
The Pirates of Dark Water
aka Los Piratas de las Aguas Tenebrosas | Los Piratas de las Aguas Negras
📅Año 1991
⏱️Duración 25min.
🎥Dirección#DonLusk, #PaulSommer, #RayPatterson
📄Guion David Kirschner, Glenn Leopold, Kristina Luckey, David Ehrman, Laren Bright, Lane Raichert, Mark Young, Bill Matheny, Kelly Ward, Flint Dille, Sam Graham, Peter Lawrence, Chris Hubbell, Matthew Malach, Sean Roche, Jim Woodring, Brian Gaughan, Michael Maurer, Kim Costalupes, Mark Kavanaugh
🎼Música Thomas Chase, Steve Rucker
🌆Fotografía Raul Salgado
🎬Productora Hanna-Barbera Productions, Turner Entertainment
📺Emición Fox Kids, ABC
Género#SeriedeTV#Animación#Aventuras#Fantástico#Piratas#Monstruos
Reparto | Intro | Sinopsis
✨Calidad 720p BluRay h264
🖥Resolución 1280x720
🗣Idioma Latino
Episodio01 - 02 - 03 - 04 - 05 - 06 - 07 - 08 - 09 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21
Suscripción a este Anime 👉🏻Aquí
Índice de Series Animadas 👉🏻Aquí