DocumentiImmaginiMediaStrumenti PDF

JSON in Dart Class

Genera classi Dart per Flutter da JSON, direttamente nel tuo browser.

Processed in your browser

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.

Tre passaggi, senza complicazioni

1

Incolla il tuo JSON

Inserisci il JSON della tua risposta API. Lo strumento deduce i tipi Dart corretti per ogni campo.

2

Classe Dart generata

Ottieni una classe Dart con null safety, costruttore factory fromJson(), metodo toJson() e tipizzazione completa compatibile con json_serializable.

3

Integra in Flutter

Copia la classe generata nel tuo progetto Flutter. Funziona direttamente con il pacchetto http, dio o qualsiasi client HTTP.

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.