Da JSON a struct Go
JSON to Go Structs
Genera struct Go con i tag json a partire da un esempio JSON, compresi i tipi annidati e ripetuti.
Genera struct Go con i tag `json:` a partire da un documento di esempio, così un corpo di risposta diventa qualcosa in cui `encoding/json` può fare l’unmarshal. I nomi dei campi sono esportati e in camel case, e la chiave originale resta nel tag, che è la parte che a mano si sbaglia.
JSON di esempio
Trascina un file .json
Letto in questa scheda. Non viene caricato niente.
Dagli tutti gli elementi che hai. Ogni record in più restringe la deduzione: un campo che manca in uno di loro è proprio quello che lo rende facoltativo.
TypeScript
Come si usa
Incollare tutti i record che si hanno
Viene letto e fuso ogni elemento di ogni array, non solo il primo. Tre record dicono molto più di uno, perché un campo che manca in uno di essi è esattamente ciò che rende quel campo facoltativo.
Dare un nome al tipo radice
Gli oggetti annidati prendono il nome dalla chiave che li contiene, al singolare per gli array, così `users` produce un `User`. Solo la radice ha bisogno di un nome dato a mano.
Leggere i conteggi sotto l’uscita
Tipi, campi facoltativi, unioni e quanti record sono stati fusi. Un conteggio di unioni sopra lo zero vuol dire che nel campione un campo ha contenuto due generi di valore diversi — vale la pena guardarlo prima di incollare il risultato in una base di codice.
Incollare le struct in un package
I campi che mancavano da alcuni record ricevono `,omitempty` nel loro tag, così un giro di marshal e ritorno non se li inventa. Non viene emessa nessuna clausola di package: si sa già dove andranno a finire.
Domande frequenti
Perché ogni numero è `float64`?
Solo quando il campione aveva un valore con la virgola. Se ogni numero del documento era intero, il campo viene emesso come tipo intero. Non c’è modo di distinguere un `1` JSON che è un id da un `1` JSON che è un prezzo arrotondato, quindi il campione è tutta la prova che c’è.
E un campo che in alcuni record è null?
Diventa un tipo puntatore, che è il modo in cui Go distingue «assente o null» da «zero». Vuol dire che dereferenziarlo richiede un controllo su nil — è seccante, ed è il motivo per cui l’alternativa, un valore semplice che in silenzio si legge come 0 o "", è peggio.
Gestisce una chiave che non è un identificatore Go valido?
Il nome del campo viene ripulito — separatori tolti, ogni parte con l’iniziale maiuscola — e la chiave grezza resta nel tag `json:`, che è quello che fa davvero la corrispondenza. Una chiave `user-id` diventa qualcosa come `UserID` con accanto `json:"user-id"`.
Vengono prodotti campi `time.Time`?
No. Un timestamp in JSON è una stringa, e trasformarlo in `time.Time` cambierebbe quello che l’unmarshal accetta. Chi lo vuole cambia il tipo del campo a mano: `encoding/json` analizza già da sé l’RFC 3339 in `time.Time`.
Può ricevere da
Da JSON a TypeScript
JSON to TypeScript
Deduce interfacce o tipi TypeScript da un esempio JSON, unendo i campi facoltativi e le unioni.
Da JSON a struct Rust
JSON to Rust Structs
Genera struct Rust annotate con serde da un esempio JSON, con Option per i campi nulli o assenti e la rinomina in snake_case.
Formattatore e validatore JSON
JSON Formatter & Validator
Formatta, minifica e valida il JSON, indicando riga e colonna esatte di un errore di sintassi.
Formattatore e validatore YAML
YAML Formatter & Validator
Riporta il YAML a un’indentazione coerente, lo valida e segnala gli errori di tabulazione e di ancora che rompono i parser.
Dopo
Questi accettano ciò che produce questo strumento, così il risultato può passare direttamente.
Formattatore e validatore JSON
JSON Formatter & Validator
Formatta, minifica e valida il JSON, indicando riga e colonna esatte di un errore di sintassi.
Da JSON a struct Rust
JSON to Rust Structs
Genera struct Rust annotate con serde da un esempio JSON, con Option per i campi nulli o assenti e la rinomina in snake_case.
Da JSON a TypeScript
JSON to TypeScript
Deduce interfacce o tipi TypeScript da un esempio JSON, unendo i campi facoltativi e le unioni.
Codificatore e decodificatore Base64
Base64 Encoder & Decoder
Codifica e decodifica in Base64 e Base64URL testo o file, trattando correttamente l’UTF-8.
Da curl a codice
curl to Code
Converte un comando curl in fetch, axios, requests di Python, Go, PHP o PowerShell.
Hash di un testo
Text Hash
Calcola MD5, SHA-1, SHA-256, SHA-384, SHA-512 e CRC-32 di una stringa, con uscita in maiuscolo o in Base64.