Generadores y estructuras de código

JSON a dataclass de Python

Genera código dataclass de Python 3.10+ a partir de muestras JSON.

Entrada JSON

Código generado

Genera dataclass de Python con uniones, valores opcionales, estructuras anidadas y nombres válidos.

El JSON y el código Python solo se infieren y muestran localmente. No se envían, ejecutan ni guardan en el almacenamiento persistente del navegador.

Acerca de esta herramienta

El conversor genera un borrador de clases de datos con tipos utilizando la biblioteca estándar de Python. Infiere la estructura, pero no convierte recursivamente diccionarios JSON en instancias dataclass. Puedes añadir la carga y validación que necesite tu aplicación.

Cómo se usa

  1. Pega JSON; varias muestras de objetos permiten identificar campos que pueden faltar.
  2. Indica el nombre de la clase de datos raíz.
  3. Pulsa «Convertir» y revisa tipos anidados, uniones y que los campos obligatorios precedan a los predeterminados.
  4. Copia el código o descarga el archivo Python. Úsalo con Python 3.10+ y añade la lógica de deserialización.

Ejemplos

  • [{"id":1,"name":"Ana"},{"id":2}]: id es obligatorio y name puede declararse como str | None = None.
  • {"matrix":[[1,2],[3,4]],"items":[]}: se infieren list[list[int]] y list[Any], respectivamente.
  • {"class":"A","first-name":"Ana"}: genera nombres válidos y documenta las claves originales en comentarios.

Reglas de conversión de tipos

Las cadenas usan str; los enteros, int; los decimales y mezclas numéricas, float; los booleanos, bool; las matrices, list[T]. Los tipos distintos pueden formar uniones. Para valores solo null o estructuras desconocidas se usan Any/None de forma conservadora. Los campos opcionales reciben = None y se sitúan después de los obligatorios. Un campo obligatorio que admite null no pasa a ser opcional automáticamente. Las clases anidadas se declaran por orden de dependencias o mediante referencias adelantadas explícitas; un objeto vacío produce una clase vacía válida. Los campos usan snake_case válido, sufijos para palabras reservadas y nombres sin colisiones. Los comentarios sobre cambios de nombre no crean un mapeo JSON. Entrada y salida: hasta 1 MiB cada una; 64 niveles, 100000 nodos, 5000 campos combinados y 256 tipos. Los enteros no seguros, números no finitos y valores que se redondean a cero por subdesbordamiento causan un error. Los demás decimales dependen de la precisión de coma flotante del navegador.

Usos habituales

  • Crear modelos estructurados para scripts de tratamiento de datos en Python.
  • Organizar muestras de API como clases de datos anidadas.
  • Distinguir campos obligatorios, opcionales y valores explícitamente nulos.

Privacidad

El JSON y el código Python solo se infieren y muestran localmente. No se envían, ejecutan ni guardan en el almacenamiento persistente del navegador.

Si quieres conservar los resultados, cópialos o descárgalos antes de salir de la página.

Preguntas frecuentes

¿Qué es una dataclass?

Es una clase de datos creada con un decorador de la biblioteca estándar de Python, que genera métodos habituales como la inicialización a partir de los campos declarados.

¿Qué versión de Python necesito?

El código requiere Python 3.10+ y utiliza sintaxis moderna como list[T] y A | None.

¿Por qué van al final los campos con valor predeterminado?

En una dataclass normal, esos campos no pueden preceder a otros sin valor predeterminado; hacerlo puede causar errores en el orden de los parámetros de inicialización.

¿Cómo se tratan las palabras reservadas?

Por ejemplo, class pasa a un nombre válido como class_. Un comentario conserva la clave JSON y se resuelven posibles colisiones de nombres.

¿La dataclass recupera automáticamente los nombres JSON originales?

No. La dataclass estándar no incluye mapeo de claves ni deserialización recursiva. Tu aplicación debe convertir los campos cuyo nombre haya cambiado.

Volver al directorio de herramientas