Ga naar inhoud
100% lokaal

JSON naar Rust struct

Zet een JSON-document om in Rust-structs die klaar zijn voor serde.

Invoer
Uitvoer

JSON naar Rust struct

Plak een JSON-object of array in, en deze tool genereert bijbehorende Rust-structs die meteen in een project kunnen worden gebruikt met serde voor serialisatie. Het bespaart je de moeite om telkens handmatig veldtypen en derive-attributen te schrijven wanneer een API-respons of configuratiebestand van vorm verandert.

De opties bepalen hoe de gegenereerde code eruitziet. Kies welke traits moeten worden afgeleid — Debug, Clone, Serialize, Deserialize, PartialEq — en of #[serde(rename_all = "camelCase")] moet worden toegevoegd, zodat idiomatische snake_case Rust-velden nog steeds camelCase JSON-sleutels correct deserialiseren. Null-waarden kunnen automatisch Option<T> worden, en je kunt i32, i64 of u64 kiezen voor hele getallen en String of een geleend &str (met een lifetime) voor tekst. Geneste objecten kunnen als afzonderlijke top-level structs worden gegenereerd of in hun eigen pub mod worden ingepakt, en velden kunnen openbaar of privé zijn.

Arrays van objecten worden samengevoegd tot één struct: een veld dat slechts in enkele items aanwezig is, wordt automatisch Option<T>, zodat een struct gegenereerd op basis van een handvol voorbeeldrecords nog steeds overeenkomt met de volledige dataset. Veldnamen worden geconverteerd naar snake_case, Rust-trefwoorden worden omgezet in raw identifiers zoals r#type, en een naam die niet schoon kan worden weergegeven, behoudt zijn oorspronkelijke sleutel via #[serde(rename = "...")] in plaats daarvan.

Alles draait lokaal in je browser — je JSON wordt nergens heen geüpload, dus het is veilig om echte API-payloads of configuratiegegevens in te plakken. Kopieer de gegenereerde code, download deze als .txt-bestand, of stuur de output terug naar de invoer om deze verder te verfijnen.

FAQ

Installeert het serde of voegt het toe aan Cargo.toml?
Nee. Het genereert alleen de struct-code. Voeg serde met de derive-functie afzonderlijk toe aan je Cargo.toml: serde = { version = "1", features = ["derive"] }.
Wat gebeurt er met een veld dat in sommige records null is en in andere aanwezig is?
Wanneer "Null-velden in Option<T> omwikkelen" ingeschakeld is, wordt dat veld Option<T>, zodat het correct deserialiseren wordt, of het nu aanwezig, null of afwezig is.
Waarom krijgt een veld een #[serde(rename = "...")] attribuut?
Dit verschijnt wanneer camelCase-naamgeving uit staat en de JSON-sleutel niet overeenkomt met de gegenereerde snake_case Rust-veldnaam, zodat de exacte originele sleutel voor deserialisatie behouden blijft.
Kan het structs genereren uit een array op het hoogste niveau?
Ja. Een array van objecten levert een type-alias op zoals pub type Root = Vec<Item>; plus de Item-struct, samengevoegd velden uit elk element in de array.
Wordt mijn JSON ergens heen geüpload?
Nee. Struct-generatie draait volledig in je browser — je JSON verlaat nooit je apparaat.