Pega Python a la izquierda y haz clic en "Convert" — lo convertimos a JSONPega tu código Python

Qué hace esta herramienta

Si alguna vez has tenido que convertir un dict de Python o una dataclass en un payload JSON para llamar a una API, una fixture de test o un trozo de documentación, sabes que se vuelve tedioso enseguida — hay que cambiar comillas, True/False pasan a true/false, None pasa a null, y los valores datetime/Decimal hay que serializarlos a mano. Pega el Python aquí y recibe JSON válido, exactamente lo que json.dumps o una llamada Pydantic .model_dump_json() producirían — sin escribir el pegamento.

No es un simple buscar-y-reemplazar. El convertidor entiende lo que Python hace realmente al serializar: las cadenas con comillas simples pasan a comillas dobles, los tuple colapsan a arrays JSON, set y frozenset también, los valores datetime y date salen como strings ISO-8601 según la RFC 8259, Decimal baja a número, y los miembros de Enum emiten su .value. Los objetos anidados se expanden en el sitio, así que una dataclass con una lista de otras dataclasses viaja limpia.

Los modelos Pydantic (v1 y v2) están soportados. Los alias de campo definidos con Field(alias=...) renombran claves en la salida, los campos Optional que son None se conservan como null, y los tipos Literal/Union salen con su valor en tiempo de ejecución. Pega un módulo entero con varias clases si quieres — cada una sale como una entrada de primer nivel.

Cómo usarlo

Tres pasos. Funciona igual si pegas un dict de dos líneas o un módulo de 300.

1

Pega tu Python (o prueba el ejemplo)

Suelta tu Python en el editor de la izquierda tal cual. Un dict literal, una dataclass definition plus instance, un Pydantic model o multiple classes with nested types — todo vale. Pulsa Load Sample si quieres ver cómo luce una entrada realista.

No hace falta que quites imports ni decoradores. Deja el formato PEP 8, las type hints y cualquier sintaxis de dataclass en paz.

2

Pulsa Convert

Haz clic en el botón verde Convert. La herramienta lee el Python, arma el grafo de objetos y lo serializa igual que json.dumps — con indentación para que se lea bien. Aparece un indicador de carga mientras trabaja.

3

Copia el JSON

El panel derecho se llena con JSON bien formateado, válido según la especificación JSON. Cópialo a tu cuerpo de request, tu fixture de pytest, tu ejemplo OpenAPI de FastAPI o tu archivo de configuración.

Cuándo viene bien de verdad

Fixtures de requests de API

Tienes un modelo de request en Pydantic y necesitas un cuerpo JSON de ejemplo para Postman, curl o un ejemplo de Swagger. Pega el modelo, saca el JSON, listo.

Datos para pytest y tests unitarios

Convierte una instancia de dataclass de tu fichero de test en un JSON semilla para tests de integración o comparaciones de snapshot — sin encoder custom.

Plantilla de archivo de configuración

Una dataclass de settings con un par de decenas de campos se convierte en una plantilla JSON lista para editar, y así no estás tecleando llaves por décima vez.

Mantener la doc alineada con el código

Genera ejemplos JSON para un README o una referencia de API directamente desde los modelos que ya tienes, para que la documentación no se quede desactualizada.

Preguntas frecuentes

¿Funciona con Pydantic v1 y v2?

Sí. Los dos están soportados, incluyendo Field(alias=...), model_config, Field(default_factory=...) y modelos anidados. Los alias renombran las claves en la salida, igual que haría el propio Pydantic.

¿Cómo se manejan datetime, Decimal y UUID?

datetime, date y time salen como strings ISO-8601. Decimal baja a número JSON (sin comillas). UUID sale como string hex estándar. bytes se codifica en base64. Coincide con las convenciones del módulo json de Python cuando enchufas un encoder custom.

¿Y Enum, Literal y Optional?

Los miembros de Enum emiten su .value. Literal["a", "b"] emite la cadena en runtime. Los campos Optional[X] que valen None pasan como null JSON en vez de desaparecer — así tu salida respeta la forma que marcan las type hints.

¿Puedo pegar un módulo entero con varias clases?

Sí. Cada clase de primer nivel con una instancia en el módulo sale como su propia entrada en el JSON. Las dataclasses y modelos Pydantic anidados se expanden en el sitio, y los campos heredados de clases padre también se incluyen.

¿Mi código se guarda en algún sitio?

El código se envía al backend solo para convertirlo. No lo logueamos ni lo persistimos. Como con cualquier herramienta online, si lo que pegas es realmente sensible, léelo antes.

¿Y si el Python tiene algo raro — lambdas, generadores, handles de ficheros?

Los valores no serializables (funciones, generadores, sockets abiertos) salen como null en vez de romper toda la conversión. Si la fuente tiene un error de sintaxis, arregla primero los obvios — el parser es tolerante con detalles de estilo, pero no puede ejecutar código roto.

Otras herramientas que te pueden hacer falta

Python a JSON es solo una pieza del puzzle. Estas son las herramientas que encajan bien con ella: