Sviluppatore / Tipi
Convertitore da JSON a struct Rust
Trasforma un esempio JSON in struct Rust con derive Serialize e Deserialize di serde, campi snake_case, rinominazioni, Option per chiavi mancanti o null e Vec per gli array.
Convertitore da JSON a struct Rust: Ogni oggetto diventa una struct con campi pubblici. Le chiavi vengono convertite in snake_case, con #[serde(rename = "…")] quando la grafia nel JSON è diversa; le parole chiave di Rust, come type, diventano identificatori raw (r#type), che serde riconverte automaticamente. Le chiavi mancanti o null in alcuni record diventano Option<T>, mentre i valori senza un tipo chiaro diventano serde_json::Value. L'output per più esempi è stato compilato e il relativo esempio è stato deserializzato con serde 1. Funziona al 100% localmente nel browser, senza caricare file sul server.
- Categoria
- Strumenti per sviluppatori
- Esecuzioni
- Nel browser
- Costo
- Gratuito · senza registrazione
- Disponibilità
- Pronto all'uso
Funziona interamente nel browser
Rust
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Address {
pub city: String,
pub zip_code: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct User {
pub id: i64,
pub user_name: String,
pub avatar_url: String,
pub score: f64,
pub tags: Vec<String>,
pub address: Address,
pub manager_id: Option<i64>,
#[serde(default)]
pub nickname: Option<String>,
}
pub type UserList = Vec<User>;
Richiede i crate serde (con la funzionalità derive) e serde_json. I nomi dei campi diventano snake_case, usando #[serde(rename)] quando la chiave è diversa; le chiavi mancanti o null in alcuni oggetti diventano Option. I numeri sono i64, a meno che un esempio non contenga una frazione.
Leggere e scrivere i dati
Deserializza con serde_json::from_str::<Root>(&text)? e serializza con serde_json::to_string(&value)?. Per impostazione predefinita, le chiavi sconosciute nell'input vengono ignorate; aggiungi #[serde(deny_unknown_fields)] a una struct per rifiutarle.
Per lo stesso esempio in Go, consulta JSON to Go; per riordinare prima l'esempio, usa il formattatore JSON.
Option e chiavi mancanti
Una chiave mancante e un valore null vengono entrambi deserializzati come None per un campo Option. Se devi distinguerli, usa Option<Option<T>> con il crate serde_with oppure mantieni serde_json::Value per quel campo.
Come usarlo
- Incolla un esempio JSON, idealmente un array con diversi record rappresentativi.
- Assegna un nome al tipo principale e scegli se omettere i campi None durante la serializzazione.
- Copia le struct nel tuo crate, che deve includere serde e serde_json.
Privacy e limitazioni
Il JSON viene convertito nel tuo browser e non viene mai caricato.
Strumenti correlati
Domande frequenti
Quali crate mi servono?
serde con la funzionalità derive e serde_json: serde = { version = "1", features = ["derive"] } e serde_json = "1" in Cargo.toml.
Perché i64 e f64?
Contengono in sicurezza qualsiasi numero JSON. Usa u32, u8 o f32 se conosci l'intervallo dei valori.
Posso usare invece #[serde(rename_all)]?
Sì: se tutte le chiavi usano la stessa convenzione, ad esempio camelCase, un unico #[serde(rename_all = "camelCase")] sulla struct sostituisce le singole rinominazioni.
Strumento gratuito · nel browser esecuzioni · senza account