JSON to Python Dataclass
Genera dataclasses de Python con type hints a partir de un objeto JSON
Acerca de JSON to Python Dataclass
Genera dataclasses de la biblioteca estándar con type hints y campos en snake_case, cada una con un classmethod from_dict que lee las claves JSON originales y construye las clases anidadas. Los enteros pasan a int, los decimales a float, los null y las claves que faltan en algunos elementos de un array a Optional, y los valores mixtos o vacíos usan Any; las claves que son palabras reservadas reciben un guion bajo, como class_. Útil para scripts que consumen APIs; los type hints no se validan en tiempo de ejecución, y todo ocurre en tu navegador.
Categoría: Conversores.
Preguntas frecuentes
¿Por qué cada clase tiene un método from_dict?
▾
Una dataclass solo acepta sus nombres de campo como argumentos, así que Root(**data) falla con claves como userName o my-key y deja los objetos anidados como dicts. from_dict asigna cada clave JSON a su campo en snake_case y construye las clases anidadas, así que llama a Root.from_dict(json.loads(texto)).
¿Qué versión de Python necesita el resultado?
▾
Python 3.9 o posterior, porque las listas y los diccionarios se escriben como list[str] y dict[str, Any]. La línea from __future__ import annotations permite que una clase haga referencia a clases definidas más abajo en el archivo.
¿La dataclass verifica los tipos de los datos recibidos?
▾
No. Los type hints no se aplican en tiempo de ejecución, así que un string en un campo int pasa sin aviso. Ejecuta mypy o pyright sobre tu código, o lleva las clases a una biblioteca de validación como pydantic si necesitas comprobaciones en tiempo de ejecución.
¿Cómo cargo un array JSON en el nivel superior?
▾
La clase de los elementos se llama Root y RootList es un alias de list[Root], así que arma la lista con [Root.from_dict(item) for item in json.loads(texto)]. Un array de primitivos recibe en cambio un alias simple, como Root = list[int].