JSON a Python
Genera dataclasses de Python, modelos Pydantic o TypedDicts a partir de JSON
Pega JSON o carga un ejemplo para generar código Python.
Qué genera JSON a Python
JSON a Python convierte una respuesta de API o cualquier muestra JSON en definiciones de tipos de Python. El modo Dataclass escribe clases @dataclass y un método de clase from_dict, porque Root(**data) no construye dataclasses anidadas ni mapea claves renombradas. El modo Pydantic v2 escribe clases BaseModel y añade Field(alias="original-key") y populate_by_name solo donde cambia un nombre. El modo TypedDict conserva las claves JSON exactas y pasa a la sintaxis funcional TypedDict("Name", {...}) cuando una clave no es un identificador válido.
Cómo usarlo
- 1.Pega JSON, sube o suelta un archivo .json, o carga uno de los ejemplos.
- 2.Define el nombre del tipo raíz. Si la raíz del JSON es un array de objetos, este nombre se aplica al tipo de los elementos y se añade RootList como alias.
- 3.Elige Dataclass, Pydantic v2 o TypedDict y decide si los atributos usan snake_case.
- 4.Lee las notas bajo la salida y luego copia el código o descarga models.py.
Cómo se infieren los tipos
- •Se revisan todos los elementos de cada array, no solo el primero, y los objetos del mismo array se combinan.
- •Una clave que falta en algunos objetos es opcional; una clave que a veces es null es anulable. Ambos casos se distinguen.
- •1 y 2.5 en la misma posición se amplían a número decimal; las demás mezclas se notifican.
- •Los arrays vacíos y los valores que solo son null no aportan información de tipo, así que se usa un tipo genérico y una nota explica el motivo.
- •Correspondencia de tipos: cadena → str, entero → int, decimal → float, booleano → bool, array → list[T], objeto → clase anidada, desconocido → Any, null observado → T | None.
- •Las palabras reservadas pasan a class_, las claves que empiezan por un dígito reciben el prefijo field_ y los nombres que coinciden reciben _2.
Límites y privacidad
Una muestra refleja cómo eran los datos en un momento, no el contrato completo de la API. Revisa los campos opcionales, los tipos genéricos y el tamaño de los números antes de confiar en el código. La entrada se limita a 5 MB y 256 niveles de anidación; a partir de 2 MB, la generación espera al botón Generar. Todo se ejecuta en tu navegador y el JSON nunca se sube. El código generado usa la sintaxis de uniones de Python 3.10+; el modo TypedDict con NotRequired necesita Python 3.11 o typing_extensions.
