Generazione di JSON di esempio da una struttura Go
Strumento che converte automaticamente le strutture Go e le loro etichette json in dati JSON di esempio. Gestisce strutture annidate, sezioni, l'opzione omitempty e l'etichetta json:"-", ed è utile per preparare simulacri di interfacce, esempi in Postman e carichi di prova per lo sviluppo dell'interfaccia utente.
Produrre un JSON d'esempio da una struttura Go
Quando allestite un simulacro di API o depositate un esempio di risposta in Postman, finite per scrivere a mano quale JSON una definizione di struttura produrrà davvero. Questo strumento genera quella forma come JSON d'esempio dalla sola definizione di struttura Go che incollate, tenendo conto tanto delle strutture annidate quanto delle slice, di omitempty e di json:"-".
Ciò che qui conta è che il nome di un campo Go non diventa necessariamente la chiave del JSON. L'etichetta json prevale dove è presente, e un campo contrassegnato json:"-" non compare affatto. Poiché omitempty scarta un campo quando il suo valore è il valore zero, perfino l'insieme delle chiavi può differire fra due codifiche della stessa struttura. Leggere la definizione a occhio invita dunque a sbagliarsi sulla forma reale del JSON, e dispiegarla meccanicamente è per l'appunto il compito di questo strumento. I valori prodotti sono solo rappresentativi di ciascun tipo: sostituiteli con dati sensati prima di servirvi dell'uscita.
Come si usa
- Incollate le definizioni di struttura Più strutture collegate fra loro si possono incollare insieme senza difficoltà.
- Indicate la struttura che vi interessa Specificatela quando ve n'è più d'una. Se lasciate il campo vuoto, viene usata la prima.
- Rivedete il JSON generato Le strutture annidate e le slice escono interamente dispiegate.
- Mettete i vostri valori Vi si trovano valori rappresentativi: sostituiteli con dati adatti al vostro scopo.
Consigli per sfruttarlo al meglio
- Incollando più strutture insieme, i tipi dei campi annidati sono risolti automaticamente e l'oggetto di esempio è generato in modo ricorsivo; se una definizione manca, il campo è sostituito con un oggetto vuoto {} e compare un avviso.
- Indicando il nome della struttura potete scegliere quale usare come radice anche quando il testo ne contiene diverse; lasciando vuoto il campo si adotta la prima che compare.
- I campi con l'etichetta json:"-" sono esclusi dal risultato. Quelli con omitempty conservano invece la chiave, che potete eliminare a mano se non vi serve.
- I valori generati sono soltanto segnaposto scelti in base al tipo: "example" per le stringhe, 1 per i numeri. Se li usate come esempio reale di risposta, sostituiteli con dati veri.
- Questo strumento è l'inverso di quello affine che converte il JSON in strutture Go: dalle strutture definite nei gestori Go potete ricavare rapidamente carichi di esempio per chi sviluppa l'interfaccia utente o per la squadra di collaudo.
Quando torna utile
Nell'allestire un simulacro di API
Fissare l'esempio di risposta prima di scrivere il server evita che il lavoro sull'interfaccia debba attendere.
Nell'inserire esempi nella documentazione
Fornisce il materiale da incollare in un esempio di Postman o in un campione di OpenAPI.
Nel verificare l'effetto di un'etichetta
Vedete in forma concreta che cosa producano davvero omitempty o json:"-".
Nel concordare una forma con l'interfaccia
Mostrare un JSON concreto lascia meno spazio al fraintendimento che consegnare una definizione di tipi.
Termini della codifica in Go
- Etichetta json
- L'annotazione apposta a un campo nella forma
json:"user_id", che dà il nome alla chiave dal lato JSON. In sua assenza si usa il nome del campo così com'è. - Omitempty
- Un'impostazione che toglie del tutto la chiave dall'uscita quando il valore è il valore zero. Si noti che anche uno 0 o una stringa vuota cadono insieme al resto.
- Json:"-"
- Un'impostazione che tiene il campo fuori dal JSON. Serve a nascondere i campi di uso interno.
- Valore zero
- Il valore iniziale fissato per ciascun tipo: 0 per i numeri, vuoto per le stringhe, nil per puntatori e slice.
- Slice
- Una sequenza di lunghezza variabile, che in JSON diventa un array. Una slice nil viene scritta come
null, il che la distingue da un array vuoto. - Campo incorporato
- La notazione che accoglie un'altra struttura scrivendone il solo nome di tipo. In JSON i suoi campi compaiono allo stesso livello delle chiavi del genitore.
Domande frequenti
A proposito — l'idea di invertire la conversione da JSON a struttura Go
Realizzando un'interfaccia web in Go, la struttura della risposta si definisce di norma combinando le strutture con le etichette json. Ma quando chi sviluppa l'interfaccia utente o chi si occupa del collaudo vuole verificare il comportamento dell'interfaccia, leggere il codice Go e tradurre mentalmente in JSON il tipo di ogni campo è un lavoro faticoso e facilmente foriero di fraintendimenti.
Questo strumento compie esattamente la conversione inversa di quello affine che trasforma il JSON in strutture Go: basta incollare la definizione della struttura per ottenere un JSON di esempio con i nomi delle chiavi presi dalle etichette json e valori segnaposto scelti in base al tipo, pronto per gli esempi di Postman o per i dati simulati dell'interfaccia utente.
Non si tratta però di un vero compilatore Go, bensì di un analizzatore semplificato basato su espressioni regolari e su una lettura riga per riga. Gestisce le definizioni di campo semplici e risolve le strutture annidate incollate insieme, ma può non interpretare correttamente notazioni complesse come le strutture anonime annidate o le definizioni di tipo distribuite su più righe. Usatelo come punto di partenza e verificate le specifiche definitive sul codice sorgente.