DT Dev Tools

JSON till Rust — Generera structs (serde)

Konvertera JSON till Rust-structs online med serde Serialize/Deserialize, Option<T> för valfria fÀlt och snake_case-namn. Gratis och körs i webblÀsaren.

🔒 Körs helt i din webblĂ€sare — ingenting laddas upp

Annons

Rust-structs för serde, genererade frÄn JSON

Serde gör JSON i Rust snabbt och sÀkert, men först nÀr du har skrivit structs som matchar datan exakt. Den hÀr JSON till Rust-konverteraren skriver dem Ät dig. Klistra in ett exempel sÄ blir varje objekt en struct som deriverar Serialize och Deserialize, nycklar blir idiomatiska snake_case-fÀltnamn med #[serde(rename)]-attribut dÀr det behövs, nÀstlade objekt blir separata structs, arrayer blir Vec<T> och vÀrden som saknas eller Àr null nÄgonstans i exemplet omsluts av Option<T>. Heltal och flyttal skiljs Ät som i64 och f64.

Generatorn bygger pÄ quicktype, som slÄr ihop alla element i varje array innan en typ vÀljs. Det spelar större roll i Rust Àn i de flesta sprÄk: en enda ovÀntad nyckel eller null gör att deserialiseringen misslyckas, sÄ att fÄnga valfria fÀlt i förvÀg sparar felsökningstid.

Synlighet och derives

VĂ€lj fĂ€ltens synlighet efter hur typerna ska anvĂ€ndas — pub för en delad modellcrate, pub(crate) för interna moduler eller privata fĂ€lt nĂ€r du vill lĂ€gga till egna konstruktorer. Deriven Debug och Clone Ă€r aktiverade som standard eftersom nĂ€stan varje modell behöver dem; stĂ€ng av dem för slankare resultat. Aktivera Skip serializing None för att lĂ€gga till skip_serializing_if, sĂ„ att None-fĂ€lt försvinner frĂ„n utgĂ„ende JSON i stĂ€llet för att skrivas som null. Kom ihĂ„g att lĂ€gga till serde med funktionen derive samt serde_json i din Cargo.toml.

SÄ fÄr du exakta typer

AnvÀnd ett exempel med flera arrayelement och ifyllda valfria fÀlt. Tomma arrayer och null ger ingen typinformation och faller tillbaka pÄ serde_json::Value, som du oftast vill ersÀtta. Efter genereringen kör du rustfmt, granskar heltalsbredder (ett ID kanske ryms i u32) och gör om strÀngfÀlt med en fast uppsÀttning vÀrden till enums med #[serde(rename_all)]. Allt körs lokalt i din webblÀsare, sÄ privata payloads laddas aldrig upp.

Hur man anvÀnder

  1. Klistra in JSONKlistra in ett JSON-dokument eller klicka pÄ Load sample.
  2. Justera derivesAnge rotstructens namn, fÀltens synlighet och vilka traits som ska deriveras.
  3. Kopiera structsKopiera Rust-koden eller ladda ner en .rs-fil och lÀgg till serde i Cargo.toml.

Vanliga frÄgor

Fungerar resultatet med serde?
Ja. Structs deriverar Serialize och Deserialize, och fÀlten fÄr #[serde(rename = "...")] överallt dÀr Rust-namnet skiljer sig frÄn JSON-nyckeln.
Hur representeras valfria fÀlt?
FÀlt som saknas eller Àr null i vissa exempel blir Option<T>. Markera Skip serializing None för att utelÀmna dem vid serialisering.
Kan jag Àndra fÀltens synlighet?
Ja. VÀlj pub, pub(crate) eller privata fÀlt och slÄ av eller pÄ Debug- och Clone-derives.
Laddas min JSON upp?
Nej. Koden genereras lokalt i din webblÀsare.
Annons