Convertir JSON a Clase Dart
Genera clases Dart para Flutter desde JSON, en tu navegador.
Para qué sirve
JSON a clase Dart para Flutter
Flutter ready
Código compatible con Flutter, json_serializable y freezed. Listo para usar con http, dio o Riverpod.
100% privado
Tu JSON de API se procesa solo en tu navegador. Datos sensibles nunca salen de tu dispositivo.
Null safety correcto
Detecta campos nullable automáticamente. Tipos requeridos con required, opcionales con ? según el JSON.
Instantáneo
Clases Dart listas en milisegundos. Sin registro, sin esperas, sin límites.
Cómo funciona
Tres pasos, sin complicaciones
Pega tu JSON
Pega el JSON de la respuesta de tu API. La herramienta infiere los tipos Dart correctos para cada campo.
Clase Dart generada
Obtienes una clase Dart con null safety, factory constructor fromJson(), método toJson() y tipado completo compatible con json_serializable.
Integra en Flutter
Copia la clase generada a tu proyecto Flutter. Funciona directamente con http package, dio o cualquier cliente HTTP.
Preguntas frecuentes
¿Tienes dudas?
json_serializable es el paquete oficial de la comunidad Dart/Flutter para la serialización JSON con generación de código. En lugar de escribir manualmente los métodos fromJson() y toJson(), defines la clase con anotaciones @JsonSerializable() y el generador de código (build_runner) crea automáticamente los métodos. Esta herramienta genera código compatible con json_serializable: la estructura de la clase, los tipos y el patrón factory fromJson son exactamente los que build_runner generaría, permitiéndote usar el código generado directamente o como punto de partida para la versión con generación automática.
El patrón factory fromJson() es el estándar en Dart para deserializar JSON. Un constructor factory puede retornar una instancia existente o crear una nueva, y en este caso recibe un Map<String, dynamic> (el resultado de jsonDecode()) y construye el objeto. Ejemplo: factory User.fromJson(Map<String, dynamic> json) => User(id: json['id'] as int, name: json['name'] as String). El método toJson() hace el proceso inverso. Este patrón es explícito, seguro en cuanto a tipos y fácil de testear.
Dart 2.12 (2021) introdujo sound null safety, una de las características más importantes del lenguaje. En null safety, los tipos no pueden ser null por defecto: String es siempre un string no-null, mientras que String? puede ser null. En el contexto de JSON, los campos que pueden estar ausentes o ser null se deben tipar como nullable (String?, int?). La palabra clave required en el constructor indica que el parámetro es obligatorio y no puede omitirse. Esta herramienta detecta automáticamente qué campos del JSON podrían ser null según su valor y genera el tipado correcto.
El flujo típico en Flutter es: 1) Hacer la llamada HTTP con http.get() o dio, 2) Decodificar el JSON con jsonDecode(response.body), 3) Pasar el Map resultante al constructor factory: final user = User.fromJson(jsonDecode(response.body)). Para listas de objetos: final users = (jsonDecode(response.body) as List).map((e) => User.fromJson(e)).toList(). Con el paquete dio, puedes usar interceptores para transformar automáticamente las respuestas. Con Riverpod o BLoC, las clases generadas se usan directamente como estado.
freezed es un paquete de generación de código para Dart/Flutter que va más allá de json_serializable. Genera clases inmutables con: método copyWith() para crear copias modificadas, patrón union/sealed para modelar estados (similar a sealed classes de Kotlin), igualdad y hashCode automáticos, y serialización JSON integrada. Es especialmente popular con Riverpod (el gestor de estado recomendado por la comunidad Flutter) para modelar el estado de la aplicación. La combinación freezed + Riverpod es uno de los patrones de arquitectura más adoptados en Flutter profesional.
La adopción de Flutter 2020-2026, el sistema de tipos de Dart y el desarrollo móvil con APIs
Flutter fue lanzado en versión estable por Google en diciembre de 2018. En 2020, con Flutter 1.17 y la estabilización de null safety, comenzó su adopción masiva. Flutter 2 (2021) introdujo soporte multi-plataforma (web, desktop) y null safety estable. Flutter 3 (2022) añadió soporte completo para macOS, Linux y Windows. En 2024-2026, Flutter es el framework más popular para desarrollo de aplicaciones móviles multiplataforma, con más de 1 millón de aplicaciones en producción según Google. La integración con APIs REST y GraphQL es fundamental en prácticamente todas las aplicaciones Flutter.
El sistema de tipos de Dart, diseñado por Google (el mismo equipo que TypeScript), combina tipado estático con inferencia de tipos. Dart es un lenguaje compilado (a ARM, x64 nativo para móvil/desktop, y a JavaScript para web) con un runtime de alta performance. A diferencia de JavaScript, Dart tiene tipos primitivos verdaderos (int, double, bool, String) sin coerciones implícitas. Sound null safety hace que el compilador garantice que las variables no-nullable nunca sean null, eliminando una clase entera de errores en tiempo de ejecución.
En el desarrollo móvil moderno con Flutter, el consumo de APIs REST o GraphQL es el patrón dominante para comunicación cliente-servidor. El paquete http (oficial de dart.dev) y dio (el más popular de la comunidad, con interceptores e internacionalización) son los clientes HTTP principales. Para gestión de estado con datos de API, Riverpod (creado por Remi Rousselet, también creado provider) con AsyncNotifier es el patrón recomendado en 2024. La arquitectura típica es: Repository layer (clases de datos con fromJson/toJson) → Service layer (lógica de negocio) → Riverpod providers → UI widgets.