Convertir JSON a Python Dataclass
Genera dataclasses de Python con type hints desde JSON. Gratis, en tu navegador.
Para qué sirve
JSON a Python dataclass con type hints
Compatible con Python 3.7+
El código generado usa el módulo dataclasses de la biblioteca estándar. Sin dependencias externas, funciona en cualquier entorno Python moderno.
100% privado
Tu JSON se procesa en el navegador. No se envía a ningún servidor. Seguro para datos de APIs internas o modelos de datos confidenciales.
Type hints correctos
Inferencia de tipos precisa: str, int, float, bool, List, Optional y dataclasses anidadas generadas con los nombres y tipos adecuados.
Instantáneo
Generación en tiempo real mientras escribes o pegas el JSON. Sin esperas ni llamadas a servidores.
Cómo funciona
Tres pasos, sin complicaciones
Pega tu JSON
Introduce el JSON que quieres convertir. Puede ser una respuesta de API, un archivo de configuración o cualquier estructura JSON válida.
Obtén tu dataclass de Python
La herramienta genera una clase Python decorada con @dataclass, con type hints inferidos (str, int, float, bool, list, dataclass anidada) para cada campo.
Copia e importa en tu proyecto
Copia el código generado a tu módulo Python. Solo necesitas importar dataclass desde el módulo dataclasses de la biblioteca estándar.
Preguntas frecuentes
¿Tienes dudas?
Las dataclasses son clases Python que se definen principalmente para almacenar datos, introducidas en Python 3.7 mediante el PEP 557. El decorador @dataclass genera automáticamente métodos como __init__, __repr__ y __eq__ basándose en los campos declarados con type hints. Son la alternativa moderna a definir clases manualmente con __init__ repetitivo, ofreciendo código más limpio y legible sin las dependencias externas de Pydantic.
Un diccionario de Python (`dict`) no tiene tipos definidos, acepta cualquier clave y valor, y no proporciona autocompletado en IDEs. Una dataclass define la estructura explícitamente con type hints, permite acceso a campos con notación de punto (`obj.field` en lugar de `obj['field']`), genera automáticamente métodos de comparación y representación, y permite a los IDEs y herramientas de análisis estático (mypy, Pyright) detectar errores de tipo antes de ejecutar el código.
La herramienta analiza los valores del JSON para inferir el tipo Python más apropiado: cadenas de texto se convierten en `str`, números enteros en `int`, decimales en `float`, booleanos en `bool`, arrays en `List[T]` donde T es el tipo inferido de sus elementos, y objetos anidados en nuevas dataclasses. Los valores null se convierten en `Optional[T]` con valor por defecto `None`.
Sí. Cuando el JSON contiene objetos dentro de objetos, la herramienta genera una dataclass separada para cada nivel de anidamiento. Las clases se ordenan correctamente en el código para que cada dataclass esté definida antes de ser referenciada. Por ejemplo, `{"user": {"name": "Ana", "age": 30}}` genera tanto una dataclass `User` como la dataclass principal que la contiene.
Los campos que tienen valor `null` en el JSON de ejemplo se generan como `Optional[T] = None` en la dataclass. Esto indica que el campo puede estar ausente o ser None en tiempo de ejecución. Para usar Optional necesitas importar `Optional` desde `typing` (Python < 3.10) o usar la sintaxis `T | None` (Python 3.10+). La herramienta genera código compatible con Python 3.7+.
Python type hints: evolución desde PEP 484 hasta dataclasses, comparativa con Pydantic
Los type hints en Python fueron introducidos por el PEP 484 en Python 3.5 (2015). Antes de eso, Python era dinámicamente tipado y las herramientas de análisis estático no podían verificar los tipos. El PEP 526 (Python 3.6) añadió anotaciones de variables, y el PEP 557 (Python 3.7) introdujo las dataclasses, que usan type hints como declaración de campos. Esta evolución convirtió a Python en un lenguaje que puede aprovechar tanto el dinamismo como la verificación estática de tipos.
El módulo dataclasses de la biblioteca estándar genera automáticamente __init__, __repr__ y __eq__. Para necesidades más avanzadas como validación de datos, serialización/deserialización automática y compatibilidad con esquemas JSON, Pydantic (v1 y v2) es la alternativa más popular. FastAPI usa Pydantic para validar automáticamente los cuerpos de peticiones HTTP. Sin embargo, para la mayoría de los casos de uso de modelado de datos interno, las dataclasses estándar son suficientes y no requieren instalar dependencias.
La transición de Python 2 a Python 3 y la adopción de type hints ha transformado el ecosistema. Herramientas como mypy (Dropbox), Pyright (Microsoft) y Pylance (VS Code) realizan análisis de tipos estáticos. En proyectos grandes, los type hints reducen significativamente los bugs de tipo en producción. Generar dataclasses desde JSON de APIs externas o esquemas de bases de datos es una práctica común para mantener código Python mantenible y verificable.