Convertitore da JSON a struct Rust
Incolla JSON e ottieni struct serde Rust idiomatici all'istante, 100% nel browser. Tipizzazione i64/u64/f64 corretta, Option per i null, #[serde(rename)] per il camelCase. Gratis.
Opzioni
Cos'è la conversione da JSON a Rust?
La conversione da JSON a Rust trasforma un campione JSON in struct Rust pronti da compilare con le macro #[derive(Serialize, Deserialize)] di serde, così non scrivi mai a mano il boilerplate di deserializzazione per le risposte API o i file di configurazione. Questo generatore rapido di struct Rust deduce i tipi numerici corretti, contrassegna i campi assenti come Option e aggiunge #[serde(rename)] per le chiavi non in snake_case — tutto al 100% nel tuo browser.
Esempi
Risposta API
{"id":101,"name":"Ada Lovelace","email":"ada@example.com","active":true,"roles":["admin","user"]} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub id: i64,
pub name: String,
pub email: String,
pub active: bool,
pub roles: Vec<String>,
}
Un tipico payload REST diventa uno struct pronto per serde da inserire nel tuo client. I numeri vengono dedotti come i64, gli array diventano Vec<String>.
Oggetto annidato
{"repo":"serde","owner":{"login":"dtolnay","id":100}} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub repo: String,
pub owner: Owner,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Owner {
pub login: String,
pub id: i64,
}
Gli oggetti annidati diventano struct separati e con nome (Owner) referenziati per campo — le forme identiche vengono deduplicate.
Array di oggetti (campo opzionale)
{"users":[{"id":1,"nick":"x"},{"id":2}]} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub users: Vec<User>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct User {
pub id: i64,
pub nick: Option<String>,
}
Gli array di oggetti si uniscono in un unico struct per l'elemento. Le chiavi assenti in alcuni elementi diventano Option<String> — senza bisogno di #[serde(default)].
Chiavi in camelCase
{"login":"octocat","publicRepos":15,"followerCount":9001,"createdAt":"2011-01-25"} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub login: String,
#[serde(rename = "publicRepos")]
pub public_repos: i64,
#[serde(rename = "followerCount")]
pub follower_count: i64,
#[serde(rename = "createdAt")]
pub created_at: String,
}
I campi diventano snake_case con #[serde(rename)] che rimanda alla chiave JSON originale. Le chiavi già in snake_case come login non ricevono rename.
Come convertire JSON in Rust
- 1
Incolla il tuo JSON
Inserisci un oggetto JSON, un array o una risposta API nel campo di input. La conversione parte istantaneamente.
- 2
Regola l'output
Rinomina lo struct radice e attiva le derivazioni serde, Debug e Clone, o la visibilità pub per adattarlo allo stile del tuo crate.
- 3
Copia o scarica
Prendi il Rust generato con un clic e incollalo direttamente nel tuo progetto.
Common Use Cases
- Client API tipizzati
- Trasforma una risposta di esempio REST o GraphQL in struct serde per un client reqwest o simile senza scrivere a mano il boilerplate di deserializzazione.
- Parsing di configurazioni e fixture
- Genera struct per file di configurazione JSON, fixture di test o payload di webhook che devi deserializzare con serde_json.
- Prototipazione rapida
- Incolla un payload sconosciuto per vedere all'istante la sua forma come tipi Rust — un modo rapido per esplorare una nuova API prima di collegarla.
Come funziona la conversione
- Inferenza strutturale
- Ogni oggetto diventa uno struct con nome; le forme identiche vengono deduplicate così ottieni un solo struct, non copie. Gli array di oggetti vengono uniti chiave per chiave, e le chiavi assenti in alcuni elementi diventano Option<T>.
- Tipizzazione numerica corretta
- Gli interi diventano i64, passano a u64 oltre i64::MAX, e ripiegano su f64 oltre u64. I valori in virgola mobile vengono rilevati dal token (1.0, 2e3) così la deserializzazione serde non fallisce mai per un float in un campo intero.
- Identificatori idiomatici e compilabili
- Le chiavi diventano campi snake_case con #[serde(rename)] che rimanda alla chiave originale; le parole chiave di Rust, i nomi duplicati e le chiavi non identificatori vengono ripulite così l'output compila sempre.
- 100% lato client
- Il parsing e la generazione girano nel tuo browser senza chiamate di rete, così i tuoi dati restano privati.
Consigli per struct Rust puliti
- Dai un nome allo struct radice
- Imposta un nome radice significativo (ad esempio User, ApiResponse) invece del Root predefinito per un codice leggibile.
- Aggiungi serde_json solo quando serve
- serde_json::Value compare per array vuoti o di tipi misti e campi solo null. Assegna a quei campi un tipo concreto da un campione più ricco se puoi, oppure aggiungi serde_json a Cargo.toml.
- Rivedi Option rispetto a obbligatorio
- I campi vengono contrassegnati come Option<T> solo quando un campione li omette. Incolla un payload rappresentativo così lo strumento deduce con precisione i campi obbligatori e opzionali.
Domande frequenti
Come converto JSON in uno struct Rust?
Genera le derivazioni serde? Mi servono serde e serde_json?
Come uso lo struct generato per analizzare JSON?
Come vengono gestiti i campi opzionali e null?
Come gestisce le chiavi camelCase e le parole chiave di Rust?
Può usare #[serde(rename_all)] al posto dei rename per campo?
Quale tipo numerico di Rust utilizza?
Come vengono tipizzate date e timestamp?
Come gestisco oggetti con chiavi dinamiche o sconosciute?
I miei dati JSON sono privati e al sicuro?
Posso generare struct Rust semplici senza serde?
Lo strumento è gratuito? Serve un account?
Strumenti correlati
Vedi tutti gli strumenti →Decodificatore e codificatore Base64
Codifica e formattazione
Decodifica e codifica Base64 online gratis. Conversione in tempo reale con pieno supporto UTF-8 ed emoji. 100% privato — gira nel tuo browser. Nessuna registrazione.
Convertitore da Base64 a immagine
Codifica e formattazione
Decodifica una stringa Base64 o un data URI in un'immagine nel tuo browser. Anteprima, dimensioni e MIME, poi scarica come PNG, JPG, GIF, SVG. Nessun upload.
Convertitore CSV in JSON
Codifica e formattazione
Converti CSV in JSON nel browser. RFC 4180, inferenza tipi, riga header, sicuro per big-int. 100% privato, nessun upload.
Convertitore da .env a JSON
Codifica e formattazione
Incolla un file .env online e ottieni subito il JSON. Password, chiavi API e token non lasciano mai il browser: parser dotenv web, 100% privato, senza upload.
Decodificatore di entità HTML gratuito — Unescape HTML
Codifica e formattazione
Decodifica le entità HTML e fai l'unescape dell'HTML online — gratis, senza registrazione, 100% nel browser. Riconverte riferimenti con nome, decimali ed esadecimali in caratteri; mai caricato.
Codificatore di entità HTML gratuito — Escape HTML
Codifica e formattazione
Codifica le entità HTML e fai l'escape dei caratteri speciali (< > & " ') online — gratis, senza registrazione, 100% nel browser. Output con nome, decimale o esadecimale; mai caricato.