UTILS.
Standaard privé
🦀

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.

Je bestanden blijven op dit apparaat

Bestanden worden in je browser verwerkt, nooit geüpload. De site downloadt de benodigde code en bestanden. Geen accounts of trackers.

Gebruik Downloaden om deze tool als één HTML-bestand op te slaan voor offline gebruik.

Privacy →
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