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.

Consigli per l'uso

  • 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.

Domande frequenti

Trasformare a mano in JSON le strutture Go destinate alle risposte di un'interfaccia espone facilmente a errori nell'interpretazione dei tipi e delle etichette json, e con le strutture annidate diventa particolarmente laborioso. Generandolo automaticamente si condividono rapidamente carichi di esempio esatti con chi sviluppa l'interfaccia utente e con la squadra di collaudo.

Se nel testo inserito non si trova la definizione corrispondente, il valore di quel campo è prodotto come oggetto vuoto {} e compare un avviso. Incollando anche la definizione d'origine si ottiene l'esempio correttamente annidato.

L'opzione omitempty serve soltanto a omettere i valori nulli dal lato Go, perciò la chiave compare ugualmente nel JSON di esempio. I campi con l'etichetta json:"-" sono invece esclusi del tutto in fase di codifica e non compaiono nemmeno nell'esempio.

No, sono soltanto segnaposto che soddisfano il tipo. Alle stringhe si assegna "example", agli interi 1, ai numeri in virgola mobile 1.5 e ai valori logici true: sostituiteli quando vi servono come dati reali.

No: lo strumento si serve di un analizzatore semplificato basato su espressioni regolari e su una lettura riga per riga, non dell'albero sintattico del linguaggio. Non gestisce notazioni complesse come le definizioni di tipo distribuite su più righe o le strutture anonime annidate, e va quindi usato come semplice strumento di prima stesura.
Tool-kun

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.