Saltar al contenido
Totalmente local

JSON a clase de datos Python

Convierte una muestra JSON en clases Python tipadas — dataclass, Pydantic, TypedDict o NamedTuple.

Entrada
Salida

JSON a clase de datos Python

Pega un JSON u objeto matriz y esta herramienta infiere automáticamente tipos y genera clases Python con anotaciones completas. Elige el estilo: @dataclass, Pydantic BaseModel para validación, TypedDict para código basado en diccionarios o NamedTuple para registros inmutables. Los objetos anidados se convierten en sus propias clases en el orden correcto; objetos con forma idéntica reutilizan una clase en lugar de duplicarse.

Las opciones controlan cuán conservador o moderno es el código. «Opcional para campos nulos» convierte null en tipos Optional en lugar de None; «Añadir valores predeterminados» permite omitir campos al crear instancias. «Alias para nombres de campo inválidos» maneja claves JSON inválidas y preserva la clave original mediante metadatos de campo o Pydantic Field(alias=...). «Usar list[T] en lugar de List[T]» alterna entre PEP 585 modernos e typing.List antiguo, mientras que anotaciones futuras habilitan sintaxis X | None / X | Y.

La inferencia distingue strings, enteros, flotantes y booleanos, fusiona contenido de matriz mixto en Union y asigna a arrays raíz un nombre RootItem con alias Root = list[RootItem]. Números sin punto decimal se leen como int — no hay forma de recuperar un «36.0» después del análisis. Todo se ejecuta localmente; tu JSON y código Python generado nunca dejan tu dispositivo.

Preguntas frecuentes

¿Qué estilos de salida son compatibles?
Cuatro: @dataclass (estilo de biblioteca estándar), Pydantic BaseModel (para validación y análisis de JSON), TypedDict (anotaciones de tipo sobre un diccionario simple sin clase en tiempo de ejecución) y NamedTuple (registros inmutables tipo tupla).
¿Cómo se manejan los objetos anidados y matrices de objetos?
Cada forma de objeto distintiva se convierte en su propia clase, nombrada según el campo que la contiene y definida antes de la clase que la referencia. Los objetos con un conjunto idéntico de campos y tipos reutilizan una clase en lugar de duplicar — una matriz de registros con la misma forma genera una única clase de elemento.
¿Qué sucede con las claves JSON que no son identificadores Python válidos?
Se sanitizan a un nombre de atributo válido (por ejemplo, «first-name» → first_name). Con «Alias para nombres de campo inválidos» activado, la clave original se preserva a través de un alias nativo (metadatos de campo en dataclass, Field(alias=...) en Pydantic) o un comentario al final para TypedDict y NamedTuple, que no tienen mecanismo de alias incorporado.
¿Puede distinguir int y float de forma fiable?
Clasifica cada número según si tiene una parte fraccionaria en tu muestra, pero JSON en sí no distingue int de float para números enteros — un valor enviado como 36.0 es indistinguible de 36 una vez analizado, por lo que se lee como int.
¿Se envía mi JSON a algún lugar?
No. El análisis y la generación de código se ejecutan completamente en tu navegador — el JSON que pegas y el Python que produce nunca dejan tu dispositivo.