UTILS.
100% in de browser
🦀

JSON naar Rust Serde-structs

Genereer Rust-structs met serde-derives uit een JSON-voorbeeld, klaar om te Serialize/Deserialize, met Option voor nullable velden en rename-attributen.

uitvoer

Over deze tool

De tool JSON naar Rust Serde-structs zet een geplakte JSON-voorbeeld om in Rust-structs geannoteerd voor serde, zodat je dezelfde payload kunt deserialiseren zonder elk veld met de hand te schrijven. Het parseert de JSON, leidt Rust-types recursief af en produceert een #[derive(Serialize, Deserialize, ...)]-struct per object: strings worden String, integers i64 (of u64 wanneer alle voorbeelden niet-negatief zijn), andere getallen f64, booleans bool, arrays Vec<T>, en geneste objecten hun eigen PascalCase-structs die vóór hun ouders worden gedefinieerd.

Al het werk gebeurt lokaal in je browser met JSON.parse en gewoon JavaScript — er wordt niets geüpload. Struct-velden worden omgezet naar snake_case, en telkens wanneer een JSON-sleutel afwijkt van het snake_case-veld voegt de tool #[serde(rename = "originalKey")] toe zodat de struct nog steeds op het wire-formaat afbeeldt. Sleutels die in sommige broer-voorbeelden afwezig zijn, of als null worden gezien, worden Option<T> met #[serde(default)] zodat deserialisatie hun afwezigheid tolereert. Lege arrays vallen terug op Vec<serde_json::Value>.

De integer-breedteschakelaar wisselt tussen 64-bits (i64/u64, standaard) en 32-bits (i32/u32) integers, en promoveert automatisch naar 64-bits wanneer een bemonsterde waarde het 32-bits bereik overschrijdt. De derive-schakelaar kiest tussen de volledige set (Serialize, Deserialize, Debug, Clone) en een minimale Serialize, Deserialize. Het bestand begint met use serde::{Serialize, Deserialize};. Kopieer het of download een .rs-bestand.

Veelgestelde vragen

Hoe worden JSON-types op Rust afgebeeld?
string naar String, integer naar i64 (of u64 wanneer elk voorbeeld niet-negatief is), niet-integer getal naar f64, boolean naar bool, array naar Vec<T>, en object naar een benoemde struct met serde-derives. Null of ontbrekende velden worden Option<T> met #[serde(default)].
Wanneer wordt #[serde(rename)] toegevoegd?
Telkens wanneer de JSON-sleutel niet gelijk is aan zijn snake_case-veldnaam — bijvoorbeeld een sleutel userName produceert veld user_name met #[serde(rename = "userName")], zodat de struct de oorspronkelijke JSON nog steeds exact deserialiseert.
Kan ik de integer-breedte kiezen?
Ja. De breedteschakelaar produceert 64-bits (i64/u64) of 32-bits (i32/u32) integers. De teken-eigenschap volgt de data: volledig niet-negatieve voorbeelden gebruiken het unsigned type. Waarden buiten het 32-bits bereik worden automatisch naar 64-bits gepromoveerd.
Welke derives zijn opgenomen?
De standaard is #[derive(Serialize, Deserialize, Debug, Clone)]; de minimale optie produceert alleen Serialize, Deserialize. Kindstructs worden vóór de ouders die ernaar verwijzen gedeclareerd zodat de module as-is compileert.

Meer tools