Vai al contenuto
100% locale

JSON a struct Rust

Converti un documento JSON in struct Rust pronte per serde.

Ingresso
Uscita

JSON a struct Rust

Incolla un oggetto o un array JSON e questo strumento genera le struct Rust corrispondenti, pronte per essere inserite in un progetto che utilizza serde per la serializzazione. Questo ti evita il tedioso lavoro di scrivere manualmente i tipi di campo e gli attributi derive ogni volta che una risposta API o un file di configurazione cambia forma.

Le opzioni controllano l'aspetto del codice generato. Scegli quali trait derivare — Debug, Clone, Serialize, Deserialize, PartialEq — e se aggiungere #[serde(rename_all = "camelCase")] in modo che i campi Rust idiomatici snake_case deserializzino correttamente le chiavi JSON camelCase. I valori null possono diventare Option<T> automaticamente, e puoi scegliere i32, i64 o u64 per i numeri interi e String o &str preso in prestito (con un lifetime) per il testo. Gli oggetti annidati possono essere generati come struct di livello superiore separate o avvolti nel loro proprio pub mod, e i campi possono essere pubblici o privati.

Gli array di oggetti vengono uniti in una singola struct: un campo presente solo in alcuni elementi diventa Option<T> automaticamente, quindi una struct generata da alcuni record di esempio corrisponde comunque al set di dati completo. I nomi dei campi vengono convertiti a snake_case, le parole chiave Rust vengono trasformate in identificatori grezzi come r#type, e un nome che non può essere rappresentato correttamente mantiene la sua chiave originale tramite #[serde(rename = "...")] invece.

Tutto funziona localmente nel tuo browser — il tuo JSON non viene mai caricato da nessuna parte, quindi è sicuro incollare payload API reali o dati di configurazione. Copia il codice generato, scaricalo come file .txt, oppure invia il risultato all'input per affinarlo ulteriormente.

FAQ

Installa serde o lo aggiunge a Cargo.toml?
No. Genera solo il codice della struct. Aggiungi serde con la feature derive al tuo Cargo.toml separatamente: serde = { version = "1", features = ["derive"] }.
Cosa succede a un campo che è null in alcuni record e presente in altri?
Quando "Avvolgi i campi null in Option<T>" è attivato, quel campo diventa Option<T> in modo che deserializzi correttamente sia che sia presente, null o mancante.
Perché un campo riceve un attributo #[serde(rename = "...")] ?
Questo appare quando la rinomina camelCase è disattivata e la chiave JSON non corrisponde al nome del campo Rust generato snake_case, quindi la chiave originale esatta viene preservata per la deserializzazione.
Può generare struct da un array al livello superiore?
Sì. Un array di oggetti produce un alias di tipo come pub type Root = Vec<Item>; più la struct Item, unendo i campi di ogni elemento nell'array.
Il mio JSON viene caricato da qualche parte?
No. La generazione di struct viene eseguita interamente nel tuo browser — il tuo JSON non lascia mai il tuo dispositivo.