JSON in Dart Class
Genera classi Dart per Flutter da JSON, direttamente nel tuo browser.
A cosa serve
Da JSON a classe Dart per Flutter
Pronto per Flutter
Codice compatibile con Flutter, json_serializable e freezed. Pronto per l'uso con http, dio o Riverpod.
100% privato
Il tuo JSON API viene elaborato solo nel tuo browser. I dati sensibili non lasciano mai il tuo dispositivo.
Null safety corretto
Rileva automaticamente i campi nullable. Tipi obbligatori con required, opzionali con ? in base al JSON.
Istantaneo
Classi Dart pronte in millisecondi. Nessuna registrazione, nessuna attesa, nessun limite.
Come funziona
Tre passaggi, senza complicazioni
Incolla il tuo JSON
Inserisci il JSON della tua risposta API. Lo strumento deduce i tipi Dart corretti per ogni campo.
Classe Dart generata
Ottieni una classe Dart con null safety, costruttore factory fromJson(), metodo toJson() e tipizzazione completa compatibile con json_serializable.
Integra in Flutter
Copia la classe generata nel tuo progetto Flutter. Funziona direttamente con il pacchetto http, dio o qualsiasi client HTTP.
FAQ
Hai delle domande?
json_serializable e il pacchetto ufficiale della community Dart e Flutter per la serializzazione JSON con generazione di codice. Invece di scrivere manualmente i metodi fromJson() e toJson(), definisci la classe con le annotazioni @JsonSerializable() e il generatore di codice (build_runner) crea i metodi in automatico. Questo strumento genera codice compatibile con json_serializable: la struttura della classe, i tipi e il pattern factory fromJson sono esattamente quelli che build_runner produrrebbe, permettendoti di usare il codice generato direttamente o come punto di partenza per la versione con generazione automatica.
Il pattern factory fromJson() e lo standard in Dart per deserializzare il JSON. Un costruttore factory puo restituire un'istanza esistente o crearne una nuova; in questo caso riceve una Map con chiave String e valore dynamic (il risultato di jsonDecode()) e costruisce l'oggetto. Esempio: factory User.fromJson(Map con String, dynamic json) restituisce un User con id preso da json come int e name preso da json come String. Il metodo toJson() esegue l'operazione inversa. Questo pattern e esplicito, type-safe e facile da testare.
Dart 2.12 (2021) ha introdotto il sound null safety, una delle funzionalita piu importanti del linguaggio. Con il null safety, i tipi non possono essere null per impostazione predefinita: String e sempre una stringa non nulla, mentre String? puo essere null. Nel contesto JSON, i campi che potrebbero essere assenti o null devono essere tipizzati come nullable (String?, int?). La parola chiave required nel costruttore indica che un parametro e obbligatorio e non puo essere omesso. Questo strumento rileva automaticamente quali campi JSON potrebbero essere null in base al loro valore e genera la tipizzazione corretta.
Il tipico flusso Flutter e: 1) Effettua la chiamata HTTP con http.get() o dio, 2) Decodifica il JSON con jsonDecode(response.body), 3) Passa la Map risultante al costruttore factory: final user = User.fromJson(jsonDecode(response.body)). Per liste di oggetti: final users = (jsonDecode(response.body) as List).map((e) => User.fromJson(e)).toList(). Con dio puoi usare gli interceptor per trasformare automaticamente le risposte. Con Riverpod o BLoC, le classi generate vengono usate direttamente come stato.
freezed e un pacchetto di generazione di codice per Dart e Flutter che va oltre json_serializable. Genera classi immutabili con: metodo copyWith() per creare copie modificate, pattern union e sealed per modellare gli stati (simile alle sealed class di Kotlin), uguaglianza e hashCode automatici, e serializzazione JSON integrata. E particolarmente diffuso con Riverpod (il gestore di stato raccomandato dalla community Flutter) per modellare lo stato dell'applicazione. La combinazione freezed e Riverpod e uno dei pattern architetturali piu adottati nel Flutter professionale.
Adozione di Flutter 2020-2026, sistema di tipi Dart e sviluppo mobile con API
Flutter e stato rilasciato in versione stabile da Google nel dicembre 2018. Nel 2020, con Flutter 1.17 e la stabilizzazione del null safety, e iniziata l'adozione di massa. Flutter 2 (2021) ha introdotto il supporto multipiattaforma (web, desktop) e il null safety stabile. Flutter 3 (2022) ha aggiunto il supporto completo per macOS, Linux e Windows. Nel 2024-2026 Flutter e il framework piu diffuso per lo sviluppo di app mobile multipiattaforma, con oltre 1 milione di applicazioni in produzione secondo Google. L'integrazione con API REST e GraphQL e fondamentale in praticamente tutte le applicazioni Flutter.
Il sistema di tipi di Dart, progettato da Google (lo stesso team di TypeScript), combina la tipizzazione statica con l'inferenza dei tipi. Dart e un linguaggio compilato (in ARM, x64 nativo per mobile e desktop, e in JavaScript per il web) con un runtime ad alte prestazioni. A differenza di JavaScript, Dart ha tipi primitivi veri (int, double, bool, String) senza coercizioni implicite. Il sound null safety garantisce a livello di compilatore che le variabili non nullable non siano mai null, eliminando un'intera categoria di errori a runtime.
Nello sviluppo mobile Flutter moderno, il consumo di API REST o GraphQL e il pattern dominante per la comunicazione client-server. Il pacchetto http (ufficiale di dart.dev) e dio (il pacchetto community piu diffuso, con interceptor e internazionalizzazione) sono i principali client HTTP. Per la gestione dello stato con dati API, Riverpod (creato da Remi Rousselet, anche autore di provider) con AsyncNotifier e il pattern consigliato nel 2024. L'architettura tipica e: layer Repository (classi dati con fromJson/toJson) → layer Service (logica di business) → provider Riverpod → widget UI.