Convierta una muestra JSON en dataclasses, modelos Pydantic o TypedDict de Python con type hints
Se ejecuta en su navegador. Nada de lo que escribe se envía a ningún sitio. Comprobado el 16 de octubre de 2026.Pegue una muestra JSON y obtenga dataclasses, modelos Pydantic v2 o TypedDict de Python con type hints. Los números enteros pasan a int y cualquier decimal convierte el campo en float; un valor null o ausente pasa a str | None con None como valor por defecto, y los 3 estilos de clase comparten la misma inferencia.
Esta página se ha traducido automáticamente del original en inglés. Ninguna persona ha revisado todavía la traducción, así que la versión en inglés es la que debe consultar. Leer el original en inglés
Pegue una muestra JSON, por ejemplo la respuesta de una API, en el cuadro de la izquierda.
Las clases Python aparecen mientras escribe: una clase por objeto, con type hints como int, float, list[str] y str | None.
Elija dataclass, Pydantic o TypedDict, y el tipado de Python 3.9 si su proyecto es anterior a 3.10.
Pulse Copiar, o Descargar para guardar models.py.
Python lee JSON como diccionarios, y una clase con type hints es lo que permite que un editor, un verificador de tipos o Pydantic detecten una clave mal escrita o un tipo erróneo. Este convertidor escribe esas clases a partir de una muestra, así que una respuesta de API larga se convierte en Python tipado con un solo pegado.
Cómo se eligen los tipos.
| Valor JSON | Tipo Python |
|---|---|
| "text" | str |
| true / false | bool |
| 42 (solo números enteros) | int |
| 4.5 (si aparece algún decimal) | float |
| null, y además un tipo | str | None, u Optional[str] |
| solo null, o tipos mezclados | Any |
| [ ... ] | list[...] |
| { } vacío | dict[str, Any] |
| { ... } | una clase propia |
Arrays de objetos. Todos los objetos de un array se fusionan en una clase, así que una clave que aparece solo en algunos sigue estando, con un tipo que admite None y None como valor por defecto. Dos objetos con exactamente las mismas claves y tipos comparten una clase.
Tres estilos. Una dataclass no necesita instalar nada; los campos con valor por defecto se colocan después de los demás, porque de lo contrario Python lanza un TypeError. Los modelos Pydantic usan atributos en snake_case con Field(alias=...) para las claves escritas de otra forma, como userName o first-name. Un TypedDict conserva las claves exactamente y marca como NotRequired las que aparecen solo a veces.
Orden y nombres. Las clases se escriben primero las hijas, de modo que cada nombre está definido antes de usarse. Una palabra clave como class pasa a ser class_, y una clave que ocultaría un tipo, como list, recibe el mismo guion bajo.
Cada estilo se comprobó ejecutando el resultado en CPython con Pydantic 2 y validando la muestra. Nada de lo que pegue sale del navegador.
Pegue una muestra JSON en el convertidor y las clases Python aparecen al lado, una por objeto, con un type hint en cada atributo. Elija dataclass para clases simples, Pydantic para validar o TypedDict para seguir trabajando con diccionarios normales, y copie el módulo en su proyecto.
Una dataclass sirve para datos que usted mismo construye y no necesita ninguna biblioteca. Pydantic sirve para datos externos, como respuestas de API, porque comprueba cada valor y convierte los objetos anidados por usted. Un TypedDict solo añade type hints al diccionario que devuelve json.loads, así que no cuesta nada en tiempo de ejecución.
Los atributos de Pydantic se escriben en snake_case, como pide PEP 8, con Field(alias="userName") para que la validación siga leyendo la clave original. Un TypedDict conserva cada clave exactamente y pasa a la sintaxis funcional cuando una clave no es un nombre válido. Una dataclass conserva las claves que son nombres válidos y anota el resto.
Una clave que era null en la muestra, o que falta en algunos objetos de un array, puede contener None, así que su type hint lo admite. Las claves ausentes reciben además None como valor por defecto, y en una dataclass esos campos pasan al final, porque Python rechaza un campo sin valor por defecto detrás de uno que lo tiene.
El tipado por defecto, como list[str] y str | None, necesita Python 3.10 o posterior. Active el tipado de Python 3.9 para obtener Optional y List del módulo typing. NotRequired para TypedDict viene de typing_extensions, y está en el propio typing desde Python 3.11.
No. La conversión se hace en su navegador sin ninguna petición a un servidor, y el JSON no se guarda, así que las respuestas de API con tokens o datos personales se quedan en su dispositivo. Cierre la pestaña y no queda nada.
Los tipos y las normas cambian; consulte la fuente antes de fiarse de una cifra.
¿Sigue sin resolverlo? Pregunte sobre Convertidor de JSON a clases Python y cualquiera que lo sepa puede responder. No se necesita cuenta.