Pega Dart a la izquierda y pulsa "Convertir" — lo transformamos en JSONPega código Dart

Qué hace esta herramienta

Si estás armando una app de Flutter y tienes una clase modelo cuyo toJson() aún no has escrito, o simplemente necesitas un cuerpo JSON de ejemplo para un test, escribir el map a mano es tedioso. Pega aquí tu Dart y recibes JSON válido —sin boilerplate, sin reescribir nada—. Funciona con una sola clase, con un fichero models.dart completo o con una instancia que hayas construido usando argumentos nombrados.

El conversor sigue cómo serializa dart:convert realmente. Los campos final salen con sus valores. int y double se mantienen como números JSON. bool sigue siendo booleano. DateTime se convierte en una cadena ISO-8601, el mismo formato que produce DateTime.toIso8601String(). List<T> pasa a ser un array JSON; Map<String, dynamic> se convierte en un objeto JSON. Los tipos nullable (String?) emiten null cuando el valor es null, o el valor en caso contrario.

Los factory constructors, constructores con nombre y helpers fromJson/toJson se reconocen todos — lo que acaba en la salida son los datos dentro de la instancia. Si pegas varias clases desde un único fichero (por ejemplo, sacadas de un paquete de pub.dev), cada clase se convierte en una entrada de nivel superior con las instancias anidadas expandidas como objetos JSON anidados. Los métodos se omiten. Los enums se serializan por defecto con su nombre, siguiendo la convención habitual de describeEnum.

Cómo usarla

Tres pasos. El mismo flujo tanto si pegas una clase pequeña como un models.dart entero.

1

Pega tu Dart (o prueba el ejemplo)

Suelta tu código Dart tal cual en el editor de la izquierda. Una definición de clase, un factory constructor, varias clases o una instancia con argumentos nombrados — todo vale. Pulsa Cargar ejemplo para ver un caso realista.

Conserva imports, anotaciones (@JsonSerializable(), @freezed) y comentarios — el parser ignora lo que no necesita. Para profundizar en el lenguaje, dart.dev/language es la referencia canónica.

2

Pulsa Convertir

Haz clic en el botón verde Convertir. La herramienta lee el Dart, recorre cada clase y campo, y produce JSON en una sola pasada. Aparece un pequeño indicador de carga mientras trabaja.

3

Copia el JSON

El panel derecho se llena con JSON indentado. Úsalo en un test de Flutter, como mock response para Dio/http, como seed de Firestore o en la documentación de tu API.

Cuándo te viene realmente bien

Tests de integración en Flutter

Tienes un modelo Order con Customer y OrderItems anidados. Pegas la clase, obtienes el JSON y lo usas como mock response en tu test de integración.

Arranque de payloads de API

Convierte una clase CreateOrderRequest en un cuerpo JSON listo para Postman, curl o una prueba rápida de backend — se acabó teclearlo a mano.

Arranque de json_serializable

Antes de ejecutar build_runner puedes ver exactamente qué forma va a emitir <code>toJson()</code> — muy útil cuando diseñas un modelo nuevo.

Mantener los docs sincronizados

Genera ejemplos JSON para un README o la referencia de la API directamente desde tus modelos Dart, para que la documentación refleje el código real.

Preguntas habituales

¿Puedo pegar varias clases a la vez?

Sí — pega un fichero de modelos entero. Cada clase de nivel superior se convierte en su propia entrada JSON y las instancias anidadas se expanden como objetos anidados. Los campos privados (con guión bajo) también se emiten, igual que haría un toJson() normal.

¿Cómo maneja DateTime, Duration y nullables?

DateTime sale como cadena ISO-8601 al estilo de toIso8601String(). Duration es un número de microsegundos. Los campos nullable (String?) emiten null cuando el valor es null, o el valor en caso contrario.

¿Y con List, Map y Set?

List<T> y Set<T> se convierten ambos en arrays JSON — JSON no tiene tipo set, así que los miembros se listan. Map<String, dynamic> pasa a ser un objeto JSON. Los genéricos anidados (List<Map<String, Order>>) se expanden recursivamente.

¿Entiende clases de freezed o json_serializable?

Sí — las anotaciones @freezed y @JsonSerializable se reconocen y los campos subyacentes van al JSON. No hace falta ejecutar build_runner antes; el conversor lee la declaración, no el código generado.

¿Cómo se emiten los enums?

Por defecto, se usa el nombre del valor del enum (OrderStatus.paid"paid"). Es la convención habitual y mantiene el JSON legible para humanos sin necesidad de código de mapeo extra.

¿Se guarda mi código?

Tu Dart se envía al backend para la conversión y no se persiste — no registramos el payload. Si el código del modelo es sensible, revísalo o límpialo antes de pegarlo.

Otras herramientas que te pueden interesar

Dart a JSON es solo una pieza. Estas encajan bien con ella: