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.

Esecuzioni
Nel browser
Costo
Gratuito · senza registrazione
Disponibilità
Pronto all'uso
Da JSON a RustElaborazione locale

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

  1. Incolla un esempio JSON, idealmente un array con diversi record rappresentativi.
  2. Assegna un nome al tipo principale e scegli se omettere i campi None durante la serializzazione.
  3. 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