JSON in Rust Struct
Genera struct Rust con serde da JSON, gratis, nel tuo browser.
A cosa serve
Da JSON a struct Rust con serde
Compatibile con l'ecosistema serde
Genera struct pronte per l'uso con serde_json, reqwest, Actix-web, Axum e qualsiasi crate dell'ecosistema Rust.
100% privato
Il tuo JSON non lascia mai il tuo browser. Nessuna registrazione, nessuna telemetria, nessun invio a server.
Convenzioni Rust corrette
snake_case automatico, Option<T> per i nullable, tipi numerici corretti come i64 e f64. Codice idiomatico.
Istantaneo
Struct generate in tempo reale. Nessun pulsante, nessuna attesa, nessun limite.
Come funziona
Tre passaggi, senza complicazioni
Incolla il tuo JSON
Incolla il JSON che vuoi modellare. Puo essere un oggetto annidato, un array o qualsiasi struttura JSON valida.
Generazione istantanea
Lo strumento genera automaticamente struct Rust con le derivazioni serde, seguendo le convenzioni snake_case.
Copia il codice
Copia il codice generato e aggiungi la dipendenza serde nel tuo Cargo.toml per usarlo direttamente.
FAQ
Hai delle domande?
serde, acronimo di serialization e deserialization, e il framework di serializzazione piu popolare dell'ecosistema Rust. Converte struct Rust in e da formati come JSON, YAML, TOML, MessagePack, CBOR e molti altri. Il punto di forza di serde e che usa macro a tempo di compilazione, il che significa zero overhead a runtime: il codice generato e efficiente quanto se avessi scritto la serializzazione manualmente.
La macro #[derive(Serialize, Deserialize)] in Rust indica al compilatore di generare automaticamente l'implementazione dei trait Serialize e Deserialize di serde per la struct. Questo elimina la necessita di scrivere manualmente il codice di serializzazione. E equivalente a implementare un'interfaccia, ma il codice viene generato a tempo di compilazione tramite macro procedurali.
Lo snake_case e la convenzione di naming ufficiale di Rust per variabili, campi di struct e funzioni, definita nelle Rust API Guidelines. Tuttavia, le API REST restituiscono spesso JSON in camelCase. serde gestisce questa discrepanza automaticamente con l'attributo #[serde(rename_all = camelCase)] a livello della struct, o #[serde(rename = nomeDelCampo)] per ogni singolo campo.
In Rust non esiste null: viene usato invece il tipo Option<T>, che puo essere Some con un valore oppure None. Quando un campo JSON puo essere null o assente, il tipo Rust corrispondente e Option<T>, ad esempio Option<String> o Option<i64>. serde deserializza automaticamente null come None e omette i campi con None durante la serializzazione con l'attributo #[serde(skip_serializing_if = Option::is_none)].
Aggiungi queste righe al tuo Cargo.toml: serde con versione 1.0 e la feature derive abilitata, e serde_json con versione 1.0. La feature derive abilita le macro #[derive(Serialize, Deserialize)]. serde_json fornisce serde_json::from_str per la deserializzazione e serde_json::to_string per la serializzazione. Sono tra i crate piu scaricati nell'ecosistema Rust.
Rust come linguaggio piu amato di Stack Overflow, l'ecosistema serde e WebAssembly con Rust
Rust e stato votato come linguaggio di programmazione piu amato nel Developer Survey di Stack Overflow per 9 anni consecutivi dal 2016 al 2024. Questa popolarita deriva dalla sua proposta unica: sicurezza della memoria senza garbage collector, prestazioni paragonabili a C e C++, e un sistema di tipi che previene intere categorie di bug a tempo di compilazione come i dereference di puntatori null, le data race e i buffer overflow. Sempre piu progetti in sistemi critici, CLI e servizi ad alte prestazioni stanno migrando verso Rust.
serde e il pilastro della serializzazione in Rust. Con oltre 300 milioni di download su crates.io, e una delle dipendenze piu diffuse dell'ecosistema. Cio che rende serde speciale e la sua architettura a modello di dati agnostico rispetto al formato: le struct implementano il modello di dati astratto di serde una sola volta, e i formati come JSON, YAML, TOML, Bincode e MessagePack implementano il proprio adattatore. Questo significa che passare da JSON a MSGPACK in un progetto Rust e spesso semplice come cambiare un crate.
WebAssembly, abbreviato in Wasm, e un altro ambito in cui Rust eccelle. Con wasm-bindgen e wasm-pack puoi compilare codice Rust in WebAssembly ed eseguirlo nel browser con prestazioni vicine al nativo. serde_json funziona su target Wasm senza modifiche. Progetti come Figma con il suo motore di rendering, Cloudflare Workers e parti di Firefox sono scritti in Rust. Lo strumento su convertir.ai usa una tecnologia simile: elaborazione lato client senza inviare dati a un server.