JSON a dataclasses y TypedDict de Python

Convierte JSON en dataclasses o clases TypedDict de Python con anotaciones de tipo, campos Optional y clases anidadas en orden de dependencias. Gratis y en el navegador.

Las clases se ordenan para que las dependencias vayan primero. Los campos opcionales tienen None por defecto; TypedDict usa NotRequired (Python 3.11+).

Se ejecuta completamente en tu navegador. Tus datos nunca se suben.

Herramientas Relacionadas

Ver Todas

¿Qué es JSON a Python?

Genera clases de Python tipadas a partir de un ejemplo JSON: clases @dataclass o definiciones TypedDict. Los objetos anidados se convierten en clases propias, que se emiten antes que las clases que las usan para que el módulo se importe sin errores.

Cómo usar JSON a Python

  1. Pega un ejemplo JSON en Entrada JSON (o haz clic en Cargar ejemplo / Abrir archivo).
  2. Fija el Nombre del tipo raíz (por defecto Root).
  3. Elige el Estilo de salida: @dataclass o TypedDict.
  4. Copia el código Python generado o haz clic en Descargar para guardarlo como archivo.

Ejemplo

Entrada
{"id":1,"name":"A","tags":["x"]}
Salida
from dataclasses import dataclass
from typing import List


@dataclass
class Root:
    id: int
    name: str
    tags: List[str]

Cuándo usar JSON a Python

Úsalo para añadir anotaciones de tipo a payloads JSON en scripts, código FastAPI o pruebas. Las dataclasses no convierten automáticamente los diccionarios anidados; usa una biblioteca como dacite o pydantic para ello, o el estilo TypedDict para mantener diccionarios simples.

Cómo funciona JSON a Python

El ejemplo se recorre de forma recursiva y cada posición acumula los tipos que ha visto. Los arrays de objetos se fusionan en un solo tipo: una clave que falta en algunos elementos pasa a ser opcional, una clave que es null en algún sitio pasa a ser anulable, los enteros mezclados con decimales se convierten en un tipo de coma flotante y cualquier otra mezcla de tipos recurre a un tipo dinámico. Los objetos anidados se convierten en tipos con nombre propio (PascalCase de la clave, claves de array en singular: orders → Order), con sufijos numéricos si los nombres coinciden. La salida Python usa int, float, str, bool, List[T], Optional[T] para null y Any para valores dinámicos. En las dataclasses, los campos obligatorios van primero y los opcionales reciben = None; las claves que no son identificadores válidos (o son palabras reservadas como class) se renombran en snake_case con un comentario # JSON key. La salida TypedDict marca las claves ausentes con NotRequired y cambia a la sintaxis funcional TypedDict("Name", {...}) cuando una clave no es un identificador válido.

Casos de Uso Comunes

  • Anotar con tipos la respuesta de una API JSON para mypy o Pyright
  • Crear dataclasses para un archivo de configuración
  • Describir payloads de webhooks con TypedDict
  • Generar modelos de partida antes de pasar a pydantic

Preguntas Frecuentes

¿Qué versión de Python se necesita?

La salida con dataclasses funciona en Python 3.7+. La salida TypedDict usa NotRequired, disponible en el módulo typing desde Python 3.11 (o en typing_extensions para versiones anteriores).

¿Por qué se renombran algunos campos?

Claves como first-name o class no son nombres de atributo válidos, así que pasan a ser first_name / class_ con un comentario que muestra la clave JSON original.

¿Puedo cargar el JSON directamente en la dataclass?

Root(**data) funciona con datos planos; los objetos anidados siguen siendo diccionarios salvo que los conviertas tú o uses una biblioteca auxiliar.

Siguientes pasos recomendados

Explora más categorías