DocumentiImmaginiMediaStrumenti PDF

JSON in Rust Struct

Genera struct Rust con serde da JSON, gratis, nel tuo browser.

Processed in your browser

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.

Tre passaggi, senza complicazioni

1

Incolla il tuo JSON

Incolla il JSON che vuoi modellare. Puo essere un oggetto annidato, un array o qualsiasi struttura JSON valida.

2

Generazione istantanea

Lo strumento genera automaticamente struct Rust con le derivazioni serde, seguendo le convenzioni snake_case.

3

Copia il codice

Copia il codice generato e aggiungi la dipendenza serde nel tuo Cargo.toml per usarlo direttamente.

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.