Convertitore Dart in JSON
Incolla classi Dart o modelli Flutter. Ti torna indietro JSON pulito.
Cosa fa questo tool
Se stai costruendo un'app Flutter e hai una classe modello con un toJson() che non hai ancora scritto, o ti serve solo un body JSON di esempio per un test, scrivere la map a mano è una rottura. Incolla qui il tuo Dart e ti torna indietro JSON valido — niente boilerplate, niente riscrivere. Funziona con una singola classe, un intero file models.dart, o un'istanza costruita con argomenti nominati.
Il convertitore segue il modo in cui dart:convert serializza davvero. I campi final escono con i loro valori. int e double restano numeri JSON. bool resta un booleano. DateTime diventa una stringa ISO-8601, lo stesso formato che produce DateTime.toIso8601String(). List<T> diventa un array JSON; Map<String, dynamic> diventa un oggetto JSON. I tipi nullable (String?) emettono null quando il valore è null, altrimenti il valore stesso.
Factory constructor, costruttori con nome e helper fromJson/toJson vengono tutti riconosciuti — nell'output finisce ciò che c'è dentro l'istanza. Se incolli più classi da un singolo file (tipo prese da un pacchetto pub.dev), ogni classe diventa una entry di primo livello e le istanze annidate vengono espanse come oggetti JSON annidati. I metodi vengono saltati. Gli enum vengono serializzati di default col loro nome, in linea con la convenzione di describeEnum.
Come usarlo
Tre step. Stesso flusso sia che incolli una classe piccola sia un intero models.dart.
Incolla il tuo Dart (o prova l'esempio)
Butta il tuo codice Dart così com'è nell'editor a sinistra. Una definizione di classe, un factory constructor, più classi, o un'istanza con argomenti nominati — va tutto bene. Clicca Carica esempio per vedere un caso realistico.
Tieni pure import, annotazioni (@JsonSerializable(), @freezed) e commenti — il parser ignora ciò di cui non ha bisogno. Per approfondire il linguaggio, dart.dev/language è il riferimento ufficiale.
Clicca Converti
Clicca il pulsante verde Converti. Il tool legge il Dart, attraversa ogni classe e ogni campo, e produce il JSON in un'unica passata. Durante l'elaborazione compare un breve indicatore di caricamento.
Copia il JSON
Il pannello di destra si riempie di JSON indentato. Usalo in un test Flutter, in una mock response per Dio/http, in un seed Firestore, o nella doc della tua API.
Quando torna davvero comodo
Test di integrazione Flutter
Hai un modello Order con Customer e OrderItems annidati. Incolli la classe, ottieni il JSON, lo usi come mock response nel tuo test di integrazione.
Bootstrap dei payload di API
Trasforma una classe CreateOrderRequest in un body JSON pronto per Postman, curl, o uno spike veloce sul backend — basta scriverlo a mano.
Bootstrap di json_serializable
Prima di lanciare build_runner puoi vedere esattamente la forma che <code>toJson()</code> produrrà — utile quando stai progettando un modello nuovo.
Tenere la doc allineata
Genera esempi JSON per un README o una reference di API direttamente dai tuoi modelli Dart, così la documentazione segue il codice vero.
Domande frequenti
Posso incollare più classi insieme?
Sì — incolla pure un intero file di modelli. Ogni classe di primo livello diventa la sua entry JSON e le istanze annidate vengono espanse come oggetti annidati. I campi privati (con underscore) vengono emessi comunque, come farebbe un normale toJson().
Come gestisce DateTime, Duration e nullable?
DateTime esce come stringa ISO-8601 in stile toIso8601String(). Duration è un numero di microsecondi. I campi nullable (String?) emettono null quando il valore è null, altrimenti il valore stesso.
E List, Map e Set?
List<T> e Set<T> diventano entrambi array JSON — JSON non ha un tipo set, quindi i membri vengono elencati. Map<String, dynamic> diventa un oggetto JSON. I generici annidati (List<Map<String, Order>>) vengono espansi ricorsivamente.
Capisce classi freezed o json_serializable?
Sì — le annotazioni @freezed e @JsonSerializable vengono riconosciute e i campi sottostanti finiscono nel JSON. Non serve lanciare build_runner prima; il convertitore legge la dichiarazione, non il codice generato.
Come vengono emessi gli enum?
Di default si usa il nome del valore dell'enum (OrderStatus.paid → "paid"). Rispecchia la convenzione più diffusa e mantiene il JSON leggibile senza bisogno di codice di mapping extra.
Il mio codice viene salvato?
Il tuo Dart viene mandato al backend per la conversione e non viene persistito — non logghiamo il payload. Per codice di modello sensibile, dai una ripulita o una ricontrollata prima di incollare.
Altri tool che potrebbero servirti
Dart in JSON è solo un pezzo. Questi ci si sposano bene: