Convertitore da JSON a Dart
Genera classi modello Dart senza dipendenze a partire da un oggetto JSON o da un array di oggetti di esempio. Il convertitore unisce tutti gli elementi esaminati, crea classi annidate, conserva le chiavi JSON originali e deduce tipi di campo null-safe con un costruttore factory fromJson. Può anche aggiungere metodi toJson per ottenere un output compatibile con jsonEncode. Il campione e il codice generato restano nel browser e non vengono mai caricati né inseriti nell’URL.
Come funziona
-
1
Incolla un campione rappresentativo
Usa un oggetto JSON o un array di oggetti. Più elementi aiutano a rilevare campi mancanti, nullable o con tipi diversi.
-
2
Scegli le opzioni Dart
Assegna un nome alla classe radice, decidi se tutti i campi devono essere nullable e abilita i metodi toJson se ti servono.
-
3
Controlla ed esporta
Verifica le classi dedotte, poi copia il codice o scarica localmente un file models.dart.
Come JSON diventa un modello Dart null-safe
La documentazione ufficiale di dart:convert spiega che jsonDecode() produce valori compatibili con JSON, come numeri, stringhe, booleani, null, liste e mappe con chiavi stringa. Una classe modello non è direttamente codificabile in JSON, ma jsonEncode() può chiamarne il metodo toJson(). Questo convertitore genera tale schema di serializzazione manuale senza aggiungere annotazioni json_serializable o dipendenze da pacchetti.
Supponiamo che un esempio contenga un utente con un indirizzo annidato. La classe User generata dispone di campi final e di un costruttore con parametri denominati. User.fromJson(Map<String, Object?> json) converte i valori scalari e chiama UserAddress.fromJson() per l’oggetto annidato. Se address manca o vale null in uno degli oggetti esaminati, il suo tipo diventa UserAddress? e la factory verifica il valore prima di crearlo. Quando toJson è attivo, i modelli annidati vengono convertiti ricorsivamente in mappe accettate da jsonEncode().
| Valore osservato in JSON | Tipo Dart generato |
|---|---|
| Numero intero | int |
| Numero decimale | double |
| Campioni interi e decimali | num |
| Testo | String |
| Booleano | bool |
| Oggetto annidato | Classe modello generata |
| Array omogeneo | List<T> |
| Array annidato vuoto o incompatibile | List<Object?> |
| Solo null o valori in conflitto | Object? |
Il convertitore esamina ogni oggetto di un array radice invece di fidarsi solo del primo elemento. Un campo diventa nullable se manca in uno degli oggetti o è esplicitamente null. Puoi inoltre rendere nullable tutti i campi quando l’API reale è meno prevedibile del campione. La guida Dart alla null safety ricorda che, per impostazione predefinita, i tipi non sono nullable e richiedono ? per accettare null.
Gestione degli identificatori e limiti dell’inferenza
Le chiavi JSON non devono necessariamente essere membri Dart validi. La punteggiatura viene rimossa, le parole sono trasformate in lowerCamelCase, le parole riservate ricevono un suffisso sicuro e le collisioni suffissi numerici deterministici. La chiave originale rimane invariata in json['original-key'] e nella mappa di toJson(). I nomi delle classi annidate includono il percorso completo, così oggetti indirizzo non correlati non vengono uniti per errore.
Un singolo campione non dimostra il contratto di un’API. Le stringhe JSON non sono automaticamente date, UUID o enum, mentre un array vuoto non offre alcun tipo di elemento. Anche i nomi di membro duplicati non garantiscono una conversione bidirezionale fedele, perché i parser JSON conservano spesso solo l’ultimo valore. Prima dell’uso in produzione, confronta i modelli generati con la documentazione o lo schema dell’API. I limiti su input, profondità, dichiarazioni dedotte e output mantengono sotto controllo il lavoro del browser.
Domande frequenti
No. Analisi, inferenza, generazione del codice, copia e download avvengono nel browser. Il JSON e il codice Dart non passano tramite i nostri server e non vengono inseriti nell’URL.
Sì. Flutter usa Dart, quindi queste classi senza dipendenze possono essere incluse in un progetto Flutter. Confronta prima i tipi dedotti con il contratto effettivo dell’API.
No. Il risultato contiene metodi fromJson manuali e metodi toJson facoltativi, senza dipendenze da pacchetti o da build_runner.
Un campo osservato come null o assente diventa nullable. Se il campione non è rappresentativo, puoi rendere nullable tutti i campi generati.
No. Il risultato riflette solo i valori osservati. Usa più oggetti di esempio e confrontalo con lo schema o la documentazione del fornitore.
Strumenti correlati
Riferimento Tabella ASCII
Tabella ASCII completa da 0 a 127 con decimale, esadecimale, ottale, binario e riferimento numerico HTML per ogni carattere, inclusi i codici di controllo come NUL, LF e DEL.
Riferimento ai caratteri HTML
Elenco ricercabile delle entità HTML, dei loro codici nominati e numerici, e copia con un clic per caratteri e simboli speciali.
Generatore di lettere casuali
Genera lettere A-Z casuali. Scegli la quantità, usa maiuscole, minuscole o un mix, e applica il risultato a giochi, spunti o attività in classe.
Riferimento scorciatoie da tastiera
Cerca le scorciatoie predefinite documentate di VS Code, Chrome e Bash con GNU Readline su macOS, Windows e Linux.
Promemoria Markdown
Riferimento pratico Markdown con anteprime reali ed esempi pronti da copiare per titoli, elenchi, tabelle, codice, link, immagini e sintassi GFM.
Formatter HTML
Formatta HTML localmente nel browser con rientri di due o quattro spazi. L’HTML non viene caricato né validato.
Strumento disponibile in altre lingue
- Konverter JSON ke Dart [ID]
- Conversor de JSON a Dart [ES]
- 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]
- Конвертер JSON в Dart [RU]
- JSON'dan Dart'a Dönüştürücü [TR]
- JSON 转 Dart 工具 [ZH]
- JSON to Dart Converter [EN]