JSON in Go è il processo di conversione automatica dei dati in formato JSON in definizioni di tipo struct del linguaggio Go. JSON è il formato di scambio dati più comune nelle API REST, file di configurazione, code di messaggi e log, mentre Go è un linguaggio fortemente tipizzato; durante lo sviluppo, la struttura dinamica di JSON deve spesso essere mappata a struct prima della deserializzazione con encoding/json. Scrivere struct manualmente, specialmente oggetti annidati, porta facilmente a campi mancanti o tipi errati; questo strumento mira ad automatizzare il lavoro ripetitivo.
Lo struct di Go è un tipo di dati composito, dichiarato con `type Name struct { ... }`. Ogni campo è composto da nome e tipo; i nomi dei campi devono iniziare con maiuscola per essere accessibili da altri pacchetti, i cosiddetti 'identificatori esportati'. Lo strumento converte automaticamente i nomi dei campi JSON in nomi di campo esportati PascalCase, ad esempio `user_name` si mappa a `UserName`, con la chiave originale preservata nel tag json.
La conversione principale di questo strumento viene eseguita dal Web Worker jsonFormat nel browser, chiamando il renderer Go di quicktype-core con le opzioni `just-types` e `no-comments`. L'intero flusso non dipende da servizi backend: il JSON di input viene analizzato localmente, i tipi inferiti, il codice Go generato, infine presentato nell'editor destro.
L'inferenza del tipo segue il mappaggio convenzionale JSON in Go: stringhe mappate a `string`, booleani a `bool`, interi a `int64`, float a `float64`, array a slice `[]T`, oggetti a struct indipendenti, `null` a `interface{}`. Gli oggetti annidati vengono elaborati ricorsivamente, mantenendo chiara la gerarchia.
Rispetto alla scrittura manuale, il codice generato dallo strumento è una 'prima bozza eseguibile'. Gli sviluppatori di solito devono solo perfezionare il nome del tipo radice, il nome del pacchetto, la precisione del tipo di campo (ad esempio int64 in int) e se usare tipi puntatore, prima di posizionarli in veri progetti Go. Combinato con la copia in un clic e il download model.go, il lavoro ripetitivo nelle fasi di integrazione e modellazione è significativamente ridotto.