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.
Emette struct Rust con le derive di `serde` a partire da un documento JSON di esempio: `Serialize`, `Deserialize`, l’`Option<…>` giusto sui campi che a volte erano assenti, e un `#[serde(rename = "…")]` ovunque la chiave JSON non sia un nome di campo snake_case legale.
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.
Rust
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 nel proprio crate
La riga `use serde::{Deserialize, Serialize};` viene emessa automaticamente; il crate in sé e la sua feature `derive` restano da aggiungere al Cargo.toml.
Domande frequenti
Perché un campo è uscito come `serde_json::Value`?
Perché nel campione ha contenuto più di un genere di valore: una stringa in un record e un numero in un altro. Qui Rust non ha un’unione senza tag su cui ripiegare, e `Value` è il tipo onesto: deserializza senza mentire su che cosa c’è dentro.
Qual è qui la differenza fra `Option<T>` e `#[serde(default)]`?
Un campo che in alcuni record era `null` diventa `Option<T>`; un campo che era semplicemente assente riceve anche `#[serde(default)]`, così deserializzare un record che ne è privo riesce invece di dare errore. Compaiono insieme quando il campione ha mostrato entrambe le cose.
Vengono generati enum per i campi stringa?
No. Ogni stringa è `String`. Dedurre un enum da una manciata di record vuol dire un errore di deserializzazione la prima volta che la produzione manda una variante che il campione non conteneva, il che è un guasto peggiore di un tipo largo.
Si possono derivare altri trait?
Vanno aggiunti a mano: l’elenco di derive emesso è di proposito soltanto `Serialize, Deserialize`. Anche `Debug` e `Clone` si vogliono quasi sempre, ma sono una modifica da una riga, e indovinare male fa sì che l’uscita non compili per i tipi che non possono derivarli.
Può ricevere da
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.
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.
Formattatore e validatore TOML
TOML Formatter & Validator
Formatta e valida il TOML, uniformando l’ordine delle tabelle e lo stile delle tabelle in linea.
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 Go
JSON to Go Structs
Genera struct Go con i tag json a partire da un esempio JSON, compresi i tipi annidati e ripetuti.
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.