UTILS.
100% en el navegador
🐍

JSON a modelo Pydantic

Convierte una muestra JSON en clases de modelo Pydantic v2 de Python, con interruptores para salida @dataclass o TypedDict y alias de campos snake_case.

salida

Acerca de esta herramienta

La herramienta JSON a modelo Pydantic convierte una muestra JSON pegada en clases de modelo de Python. Los desarrolladores de Python y FastAPI están constantemente construyendo modelos Pydantic a partir de respuestas de API de ejemplo, y este conversor lo hace al instante en el navegador. Analiza tu JSON, infiere tipos de Python de forma recursiva y emite una clase por objeto: las cadenas pasan a str, las cadenas de fecha-hora ISO a datetime, las cadenas de solo fecha a date, los enteros a int, otros números a float, los booleanos a bool, los arrays a List[T], y los objetos anidados a sus propias clases de modelo nombradas en PascalCase.

Todo el análisis y la generación ocurren localmente con JSON.parse y JavaScript plano, así que nada de lo que pegues sale de tu máquina. Las clases hijas se emiten antes de las clases que las referencian (orden topológico), y la cabecera solo importa lo que realmente se usa: BaseModel y Field de pydantic, Optional / List / Union / Any de typing, y datetime / date cuando corresponda. from __future__ import annotations siempre se incluye para que las referencias adelantadas funcionen sin importar el orden.

Las claves ausentes en algunos objetos hermanos, o vistas como null, pasan a Optional[T] = None. El interruptor de modo de salida alterna entre Pydantic v2 BaseModel (por defecto), @dataclass de la stdlib, y typing.TypedDict. Activa los campos snake_case para renombrar claves camelCase o inválidas y añadir automáticamente Field(alias="originalKey") para que el modelo siga analizando el JSON original. Copia el código o descárgalo como archivo .py.

Preguntas frecuentes

¿Qué tipos de Python se infieren?
string a str, fecha-hora ISO a datetime, solo fecha a date, entero a int, número no entero a float, booleano a bool, array a List[T] con T combinado de los elementos, y objeto a una clase BaseModel anidada. Los valores null o ausentes pasan a Optional[T] = None.
¿Puedo obtener un dataclass o TypedDict en su lugar?
Sí. El interruptor de modo de salida emite Pydantic v2 BaseModel (por defecto), un @dataclass de la stdlib con la importación dataclasses, o una clase typing.TypedDict. La inferencia de tipos es la misma; solo cambian el envoltorio de la clase y las importaciones.
¿Cómo se manejan las claves camelCase o no identificadoras?
Con los campos snake_case activados, una clave como userName pasa a user_name más Field(alias="userName") para que siga siendo reversible. Las claves que son palabras reservadas de Python o identificadores inválidos siempre reciben alias para que el código generado sea válido.
¿Están las clases ordenadas correctamente?
Sí. Las clases hijas anidadas se declaran antes de las clases padre que las usan, y se incluye from __future__ import annotations, así que los modelos compilan sin errores de referencia adelantada.

Más herramientas