Vai al contenuto

JSON Convertitore di strutture Go — Numio

Genera definizioni di struct Go da JSON usando un port di json-to-go, formattate con gofmt. Le chiavi diventano campi CamelCase esportati con tag json:"..."; gli oggetti annidati diventano struct anonime inline e null diventa any.

Scrivere una struct per decodificare con json.Unmarshal la risposta di un’API REST di terze parti.

Quando usarlo

  • Scrivere una struct per decodificare con json.Unmarshal la risposta di un’API REST di terze parti.
  • Tipi di richiesta e risposta di bootstrap per un gestore Go HTTP da payload di esempio.

Come si usa

  1. Incolla un oggetto o un array JSON nell'editor di sinistra.
  2. Leggere la struttura generata; il tipo root è sempre denominato AutoGenerated.
  3. Copialo nel tuo pacchetto, rinomina il tipo ed estrai le strutture inline in tipi con nome se li riutilizzi.

JSON

{
  "id": 42,
  "user_name": "ada",
  "score": 9.5,
  "active": true,
  "deleted_at": null,
  "tags": ["go", "json"],
  "address": { "city": "Tokyo", "zip": "100-0001" }
}

Vai a strutturare

type AutoGenerated struct {
	ID        int      `json:"id"`
	UserName  string   `json:"user_name"`
	Score     float64  `json:"score"`
	Active    bool     `json:"active"`
	DeletedAt any      `json:"deleted_at"`
	Tags      []string `json:"tags"`
	Address   struct {
		City string `json:"city"`
		Zip  string `json:"zip"`
	} `json:"address"`
}

Dettagli e limiti

La generazione viene eseguita nel browser. Non sono presenti impostazioni per il nome del tipo, le strutture inline o denominate o i tag.

Le iniziali sono in maiuscolo (id diventa ID) e snake_case diventa CamelCase, con la chiave originale mantenuta nel tag json.

I numeri interi diventano int (int64 quando sono grandi), i decimali float64. null, gli array vuoti e gli array misti diventano any o []any.

Quando gli oggetti in un array differiscono, le chiavi mancanti in alcuni ottengono ,omitempty.

FAQ

Posso convertire un array JSON alla radice?

Sì. Produce type AutoGenerated []struct{...}, unendo i campi di tutti gli oggetti dell’array.

Perché al mio campo null viene assegnato il tipo any?

Un valore null non contiene informazioni sul tipo. Sostituisci any con un puntatore come *string o *time.Time per mantenere il supporto nil.

Genera strutture annidate denominate?

No. Gli oggetti nidificati sono strutture anonime in linea. Spostali manualmente nei tipi con nome se è necessario farvi riferimento.

Specifiche e riferimenti