Conversor de JSON a Dart
Genera clases de modelo Dart sin dependencias a partir de un objeto JSON o de una matriz de objetos de muestra. El conversor combina todos los elementos analizados, crea clases anidadas, conserva las claves JSON originales e infiere tipos de campo con null safety junto con un constructor factory fromJson. Añade métodos toJson si necesitas una salida compatible con jsonEncode. Tanto la muestra como el código generado permanecen en este navegador: nunca se suben ni se incluyen en la URL.
Cómo funciona
-
1
Pega una muestra representativa
Usa un objeto JSON o una matriz de objetos. Varias muestras permiten detectar campos ausentes, nullable o con tipos diferentes.
-
2
Elige las opciones de Dart
Asigna un nombre a la clase raíz, decide si todos los campos deben ser nullable y activa los métodos toJson si los necesitas.
-
3
Revisa y exporta
Comprueba las clases inferidas y copia el código o descarga un archivo models.dart local.
Cómo se convierte JSON en modelos Dart con null safety
La documentación oficial de dart:convert explica que jsonDecode() produce valores compatibles con JSON, como números, cadenas, booleanos, null, listas y mapas con claves de texto. Una clase de modelo no puede codificarse directamente como JSON, pero jsonEncode() puede llamar a su método toJson(). Este conversor genera ese patrón de serialización manual sin añadir anotaciones json_serializable ni dependencias de paquetes.
Imagina una muestra que contiene un usuario con una dirección anidada. La clase User generada tiene campos final y un constructor con parámetros nombrados. User.fromJson(Map<String, Object?> json) convierte los valores escalares y llama a UserAddress.fromJson() para el objeto anidado. Si address falta o vale null en cualquiera de los objetos analizados, su tipo pasa a ser UserAddress? y la factory comprueba el valor antes de crearlo. Al activar toJson, los modelos anidados se convierten recursivamente en mapas que acepta jsonEncode().
| Valor observado en JSON | Tipo Dart generado |
|---|---|
| Número entero | int |
| Número decimal | double |
| Muestras enteras y decimales | num |
| Texto | String |
| Booleano | bool |
| Objeto anidado | Una clase de modelo generada |
| Matriz homogénea | List<T> |
| Matriz anidada vacía o incompatible | List<Object?> |
| Solo null o valores incompatibles | Object? |
El conversor examina todos los objetos de una matriz raíz, no solo el primero. Un campo se vuelve nullable si falta en algún objeto o aparece expresamente como null. También puedes hacer nullable todos los campos cuando la API real sea menos predecible que la muestra. La guía de null safety de Dart recuerda que los tipos no aceptan null de forma predeterminada y necesitan ? para hacerlo.
Tratamiento de identificadores y límites de la inferencia
Las claves JSON no tienen por qué ser miembros Dart válidos. Se eliminan los signos de puntuación, las palabras se convierten a lowerCamelCase, las palabras reservadas reciben un sufijo seguro y las colisiones obtienen sufijos numéricos deterministas. La clave original permanece intacta en json['original-key'] y en el mapa de toJson(). Los nombres de las clases anidadas incluyen su ruta completa para evitar que dos objetos de dirección distintos se fusionen por error.
Una sola muestra no demuestra el contrato de una API. Las cadenas JSON no son automáticamente fechas, UUID ni enums, y una matriz vacía no aporta ningún tipo de elemento. Los nombres de miembro duplicados tampoco permiten una conversión de ida y vuelta fiable: los analizadores JSON suelen conservar únicamente el último valor. Antes de usar los modelos en producción, compáralos con la documentación o el esquema de la API. La herramienta limita el tamaño de entrada, la profundidad, las declaraciones inferidas y la salida para mantener acotado el trabajo del navegador.
Preguntas frecuentes
No. El análisis, la inferencia, la generación de código, la copia y la descarga se realizan en el navegador. El JSON y el código Dart no se envían al servidor ni se incluyen en la URL.
Sí. Flutter utiliza Dart, por lo que estas clases sin dependencias se pueden incorporar a un proyecto Flutter. Compara primero los tipos inferidos con el contrato real de la API.
No. Genera métodos fromJson manuales y métodos toJson opcionales, sin depender de ningún paquete ni de build_runner.
Un campo pasa a ser nullable si aparece como null o falta en alguna muestra. Puedes hacer nullable todos los campos si la muestra no representa todos los casos.
No. El resultado solo refleja los valores observados. Usa varios objetos de muestra y contrasta el resultado con el esquema o la documentación del proveedor.
Herramientas relacionadas
Referencia de la tabla ASCII
Tabla ASCII completa del 0 al 127 con decimal, hex, octal, binario y referencia numérica HTML para cada carácter, incluidos los códigos de control como NUL, LF y DEL.
Referencia de caracteres HTML
Lista buscable de entidades HTML, sus códigos nombrados y numéricos, y una copia con un clic para caracteres y símbolos especiales.
Referencia de atajos de teclado
Busca los atajos predeterminados documentados de VS Code, Chrome y Bash con GNU Readline en macOS, Windows y Linux.
Generador de letras aleatorias
Genera letras aleatorias A-Z. Elige la cantidad, usa mayúsculas, minúsculas o mezcla de ambas, y aplica el resultado en juegos, consignas o clase.
Generador de Paletas de Color
Genera paletas monocromáticas, análogas, complementarias, triádicas o tetrádicas desde un color base HEX y exporta variables CSS listas para copiar.
Generador de EditorConfig
Genera un archivo .editorconfig con tu estilo y tamaño de indentación, fin de línea, charset y reglas de espacios para un formato consistente en IDEs y editores.
Herramienta disponible en otros idiomas
- Konverter JSON ke Dart [ID]
- Convertisseur JSON vers Dart [FR]
- JSON to Dart 변환기 [KO]
- JSON-naar-Dart-converter [NL]
- ตัวแปลง JSON เป็น Dart [TH]
- محول JSON إلى Dart [AR]
- JSON-in-Dart-Konverter [DE]
- Trình chuyển JSON sang Dart [VI]
- JSON till Dart-konverterare [SV]
- Konwerter JSON na Dart [PL]
- Conversor de JSON para Dart [PT]
- JSONからDartへの変換ツール [JA]
- Convertitore da JSON a Dart [IT]
- Конвертер JSON в Dart [RU]
- JSON'dan Dart'a Dönüştürücü [TR]
- JSON 转 Dart 工具 [ZH]
- JSON to Dart Converter [EN]