Convertidor de JSON a Python

Genera dataclasses de Python a partir de una muestra JSON directamente en tu navegador.

Esta herramienta se ejecuta completamente en tu navegador. Tus archivos nunca se suben a un servidor.

from __future__ import annotations
from dataclasses import dataclass
from typing import Any, List

@dataclass
class Root:
    name: str
    age: int
    active: bool
    tags: List[str]
    address: Address


@dataclass
class Address:
    street: str
    zip: str

Qué hace este convertidor

Lee un valor JSON y genera dataclasses de Python equivalentes: un `@dataclass` por cada forma de objeto encontrada en la muestra, con cada campo anotado según el valor que contiene.

Cómo usarlo

Pega un objeto, lista o valor primitivo JSON en el editor. Aparece de inmediato una dataclass `Root` (o un alias de tipo, si la raíz no es un objeto), además de una dataclass adicional por cada forma de objeto anidada.

Ejemplo

Un objeto con una cadena `name` y un objeto anidado `address` produce `class Root: name: str; address: Address` junto con una `class Address` separada, nombrada según la clave de la que proviene.

Correspondencia de tipos

Las cadenas se convierten en `str`, los números enteros en `int`, los decimales en `float`, los booleanos en `bool` y las listas en `List[ElementType]`. Las claves JSON que no son identificadores Python válidos (por ejemplo, con un guion) se convierten automáticamente en un nombre seguro.

Objetos anidados y listas

Cada objeto anidado obtiene su propia dataclass, generada a partir de su clave. La salida comienza con `from __future__ import annotations`, de modo que las dataclasses pueden referenciarse entre sí sin importar el orden en que se definan.

Limitaciones

Las dataclasses generadas describen solo la muestra JSON proporcionada y no incluyen una forma de reconstruirlas desde un dict (sin ayudantes `from_dict`/`to_dict`) — deberás añadir tu propia serialización si la necesitas. Las listas de objetos se tipan solo a partir de su primer elemento.

Privacidad

El análisis y la generación de código se ejecutan localmente en tu navegador. El JSON que pegas y el Python generado nunca se suben.

Preguntas Frecuentes

¿Por qué la salida incluye "from __future__ import annotations"?
Permite que las dataclasses generadas se referencien entre sí sin importar el orden en que se definan, sin necesitar referencias adelantadas entre comillas.
¿Esto maneja claves JSON con guiones o espacios?
Sí — una clave que no es un identificador Python válido se convierte automáticamente en uno seguro (por ejemplo, first-name pasa a first_name), aunque puede no parecerse exactamente a la clave original.
¿Esto incluye código de serialización/deserialización JSON?
No — solo genera las formas de las dataclasses; añade tu propio json.loads/dataclasses.asdict o una biblioteca como dacite si necesitas convertir entre JSON y estos objetos.