Skip to content

Convertidor de JSON a clases de Python

Pega JSON y obtén clases de Python: dataclass, Pydantic v2 o TypedDict. Tipado Optional, alias camelCase, clases anidadas. 100% en el navegador, gratis.

Sin rastreo Se ejecuta en el navegador Gratis
Salida
0 caracteres
Salida Python
0 líneas
Salida verificada frente a la sintaxis de Python 3.12+ y la semántica de Pydantic v2 en payloads de API reales. — Go Tools Team · Jul 3, 2026

¿Qué es la conversión de JSON a Python?

La conversión de JSON a Python transforma una muestra JSON en clases de Python listas para usar — un dataclass de la biblioteca estándar, un modelo de Pydantic v2 o un TypedDict — para que nunca escribas a mano las definiciones de campos de una respuesta de API o un archivo de configuración. Este generador de clases de Python infiere los tipos correctos (int, float, str, bool, Optional), convierte los objetos anidados en clases con nombre y añade alias de Pydantic para las claves camelCase, todo al 100% en tu navegador.

Ejemplos

Respuesta de API → dataclass

{"id":101,"name":"Ada Lovelace","email":"ada@example.com","active":true,"roles":["admin","user"]}
from dataclasses import dataclass
from typing import List


@dataclass
class Root:
    id: int
    name: str
    email: str
    active: bool
    roles: List[str]

Un payload REST típico se convierte en un @dataclass listo para usar. Los números enteros infieren int, los decimales infieren float y los arrays se convierten en List[str].

Objeto anidado (clase hija primero)

{"repo":"pydantic","owner":{"login":"samuelcolvin","id":100}}
from dataclasses import dataclass


@dataclass
class Owner:
    login: str
    id: int


@dataclass
class Root:
    repo: str
    owner: Owner

Los objetos anidados se convierten en clases separadas y con nombre. La clase hija (Owner) se emite antes que la padre para que el código se ejecute sin from __future__ import annotations.

camelCase → alias de Pydantic v2

{"login":"octocat","publicRepos":15,"createdAt":"2011-01-25"}
from pydantic import BaseModel, ConfigDict, Field


class Root(BaseModel):
    model_config = ConfigDict(populate_by_name=True)

    login: str
    public_repos: int = Field(alias="publicRepos")
    created_at: str = Field(alias="createdAt")

En modo Pydantic, los campos son snake_case con Field(alias=...) que remite a la clave JSON original, y populate_by_name te permite construir el modelo de cualquiera de las dos formas, para que la validación haga ida y vuelta con datos reales de API.

Array de objetos → TypedDict (clave opcional)

{"users":[{"id":1,"nick":"x"},{"id":2}]}
from typing import List, Optional, TypedDict


class User(TypedDict):
    id: int
    nick: Optional[str]


class Root(TypedDict):
    users: List[User]

Los arrays de objetos se fusionan en un único tipo de elemento. Una clave ausente en algunos elementos (nick) se convierte en Optional. TypedDict describe la forma de un dict simple sin ningún coste en tiempo de ejecución.

Cómo convertir JSON a Python

  1. 1

    Pega tu JSON

    Suelta un objeto JSON, un array o una respuesta de API en el campo de entrada. La conversión empieza al instante.

  2. 2

    Elige dataclass, Pydantic o TypedDict

    Cambia el estilo de salida para adaptarlo a tu proyecto y renombra la clase raíz desde el Root predeterminado.

  3. 3

    Copia o descarga

    Toma el Python generado con un clic y pégalo directamente en tu código.

Common Use Cases

Clientes de API tipados
Convierte una respuesta de ejemplo REST o GraphQL en modelos de Pydantic o dataclasses para un cliente requests o httpx sin escribir a mano las definiciones de campos.
Análisis de configuración y fixtures
Genera modelos para archivos de configuración JSON, fixtures de prueba o payloads de webhooks que necesitas cargar y validar.
Prototipado rápido y sugerencias de tipo
Pega un payload desconocido para ver al instante su forma como tipos de Python — una forma rápida de explorar una nueva API o añadir sugerencias TypedDict a código heredado basado en dicts.

Cómo funciona la conversión

Inferencia estructural
Cada objeto se convierte en una clase con nombre; las formas idénticas se deduplican para que obtengas una sola clase, no copias. Los arrays de objetos se fusionan clave a clave, y las claves ausentes en algunos elementos se convierten en Optional.
Tres destinos idiomáticos
dataclass mantiene cero dependencias y conserva las claves válidas para Root(**data); Pydantic v2 añade alias de Field más populate_by_name para una validación real; TypedDict describe un dict simple para los verificadores de tipos estáticos, usando sintaxis funcional cuando una clave no es un identificador.
Tipado correcto y con pocas dependencias
Los números enteros se asignan a int (precisión arbitraria, sin desbordamiento), los decimales y exponentes a float, y los campos que solo son null a Optional[Any]. Las importaciones de typing (Optional, List, Any) se añaden solo cuando realmente se usan.
100% del lado del cliente
El análisis y la generación se ejecutan en tu navegador sin llamadas de red, por lo que tus datos siguen siendo privados.

Consejos para modelos de Python limpios

Ajusta el modo a la tarea
Usa dataclass para contenedores de datos internos, Pydantic v2 cuando validas o analizas entradas no confiables, y TypedDict cuando solo necesitas sugerencias de tipo estáticas sobre dicts existentes.
Pega una muestra representativa
Los campos se marcan como Optional solo cuando una muestra los omite, y los valores que solo son null recurren a Any. Un ejemplo completo y con datos produce los tipos más precisos.
Nombra tu clase raíz
Define un nombre raíz significativo (User, ApiResponse) en lugar del Root predeterminado para un código legible e importable.

Preguntas frecuentes

¿Cómo convierto JSON en una clase de Python?
Pega tu JSON en el campo de entrada. El conversor lo analiza al instante en tu navegador y genera Python a la derecha. Elige dataclass, Pydantic v2 o TypedDict con el selector y luego haz clic en Copiar — sin subida, sin cuenta, sin esperas.
¿Cuál es la diferencia entre la salida dataclass, Pydantic y TypedDict?
dataclass te da un @dataclass de la biblioteca estándar sin dependencias — perfecto para simples contenedores de datos. Pydantic v2 emite clases BaseModel que validan y convierten los datos en tiempo de ejecución, ideal para analizar respuestas de API no confiables. TypedDict describe la forma de un dict simple para los verificadores de tipos estáticos (mypy, Pyright) sin coste en tiempo de ejecución. Cambia de modo para comparar el mismo JSON en cada uno.
¿Cómo genero un modelo de Pydantic a partir de JSON?
Elige la pestaña Pydantic v2. Los campos se convierten a snake_case con Field(alias="originalKey") para que el modelo siga leyendo JSON en camelCase, y model_config = ConfigDict(populate_by_name=True) te permite construirlo también por nombre de campo. Analiza un payload con Root.model_validate(data) — Pydantic valida los tipos y lanza un error claro ante una entrada incorrecta.
¿Cómo gestiona la salida dataclass las claves camelCase?
Un dataclass no tiene alias integrado, así que para que Root(**data) siga funcionando, el modo dataclass conserva la clave original como nombre de campo cuando es un identificador válido de Python (publicRepos se queda como publicRepos). Si quieres snake_case idiomático con alias, usa mejor el modo Pydantic v2, que remite los campos snake_case a la clave JSON exacta.
¿Cómo se tipan los campos opcionales y null?
Cuando una clave aparece en algunos elementos del array pero no en otros, su tipo se envuelve en Optional. Un campo que solo es null se convierte en Optional[Any], porque el null de JSON por sí solo no aporta ningún tipo. Pega una muestra representativa con un valor completo para obtener un tipo más específico que Any.
¿A qué tipo de Python se asigna cada valor JSON?
Las cadenas se asignan a str, los booleanos a bool, los números enteros a int y cualquier número con punto decimal o exponente a float. Como los enteros de Python son de precisión arbitraria, hasta los IDs enormes siguen siendo int — no hay desbordamiento de 64 bits. Los arrays vacíos o de tipos mixtos se convierten en List[Any], y los objetos en clases anidadas.
¿Gestiona objetos anidados y arrays de objetos?
Sí. Cada objeto anidado se convierte en su propia clase con nombre, y las formas idénticas se deduplican en una única clase reutilizada por cada campo. Los arrays de objetos se fusionan clave a clave para que obtengas una sola clase de elemento, con las claves ausentes en algunos elementos marcadas como Optional. Las clases hijas siempre se emiten antes que las clases que las usan.
¿Cómo se gestionan las palabras clave de Python y las claves que no son identificadores?
Una clave JSON que sea una palabra clave de Python (class, from, import) recibe un guion bajo final (class_). Las claves con guiones, espacios o un dígito inicial se sanean a identificadores válidos en los modos dataclass y Pydantic. En modo TypedDict, cualquier dict que contenga una clave que no sea identificador se emite con la sintaxis funcional TypedDict('Name', {...}) para conservar la clave exacta como "first-name".
¿Cómo uso el dataclass generado para analizar JSON?
Para un objeto plano, json.loads y luego Root(**data) funciona directamente. Para estructuras anidadas, dataclass no aplica recursión automáticamente — construye tú mismo los objetos hijos, usa una biblioteca como dacite o pydantic.dataclasses, o cambia esta herramienta al modo Pydantic v2, donde Root.model_validate(json.loads(text)) analiza todo el árbol en una sola llamada.
¿Mis datos JSON son privados y seguros?
Sí. La conversión se ejecuta al 100% en tu navegador con JavaScript. Tu JSON — incluidos tokens, IDs o datos de clientes — nunca sale de la página y nunca se envía a un servidor.
¿La herramienta es gratis? ¿Necesito una cuenta?
Es completamente gratis, sin registro, sin límites y sin anuncios que saturen el espacio de trabajo. Funciona sin conexión una vez que la página se ha cargado.

Herramientas relacionadas

Ver todas las herramientas →