DT Dev Tools

JSON naar Rust struct converter (serde) — Structs genereren

Zet JSON om naar Rust-structs met serde Serialize/Deserialize-derives, Option<T> voor optionele velden en snake_case-namen. Gratis, in je browser.

🔒 Draait volledig in je browser — niets wordt geüpload

Advertentie

Rust-structs voor serde, gegenereerd uit JSON

Serde maakt JSON in Rust snel en veilig, maar pas als je structs hebt geschreven die exact bij de data passen. Deze JSON naar Rust converter schrijft ze voor je. Plak een voorbeeld en elk object wordt een struct met Serialize en Deserialize, sleutels worden idiomatische snake_case-veldnamen met #[serde(rename)]-attributen waar nodig, geneste objecten worden aparte structs, arrays worden Vec<T> en waarden die ergens in het voorbeeld ontbreken of null zijn, worden verpakt in Option<T>. Gehele getallen en kommagetallen worden onderscheiden als i64 en f64.

De generator is gebouwd op quicktype, dat alle elementen van elke array samenvoegt voordat het een type kiest. In Rust is dat belangrijker dan in de meeste talen: één onverwachte sleutel of null laat deserialisatie mislukken, dus het vooraf vastleggen van optionele velden bespaart debugtijd.

Zichtbaarheid en derives

Kies de veldzichtbaarheid die past bij het gebruik van de typen — pub voor een gedeelde modelcrate, pub(crate) voor interne modules, of private velden als je eigen constructors wilt toevoegen. De derives Debug en Clone staan standaard aan omdat bijna elk model ze nodig heeft; zet ze uit voor slankere uitvoer. Schakel Skip serializing None in om skip_serializing_if toe te voegen, zodat None-velden uit uitgaande JSON verdwijnen in plaats van als null te worden geschreven. Vergeet niet serde met de feature derive en serde_json aan je Cargo.toml toe te voegen.

Nauwkeurige typen krijgen

Gebruik een voorbeeld met meerdere arrayitems en ingevulde optionele velden. Lege arrays en nulls geven geen typeinformatie en vallen terug op serde_json::Value, dat je meestal wilt vervangen. Voer na het genereren rustfmt uit, controleer de breedte van gehele getallen (een ID past misschien in u32) en zet stringvelden met een vaste set waarden om in enums met #[serde(rename_all)]. Alles draait lokaal in je browser, dus privé payloads worden nooit geüpload.

Hoe te gebruiken

  1. Plak JSONPlak een JSON-document of klik op Load sample.
  2. Stel derives inStel de naam van de rootstruct, de veldzichtbaarheid en de af te leiden traits in.
  3. Kopieer de structsKopieer de Rust-code of download een .rs-bestand en voeg serde toe aan Cargo.toml.

Veelgestelde vragen

Werkt de uitvoer met serde?
Ja. Structs leiden Serialize en Deserialize af, en velden krijgen #[serde(rename = "...")] overal waar de Rust-naam van de JSON-sleutel verschilt.
Hoe worden optionele velden weergegeven?
Velden die in sommige voorbeelden ontbreken of null zijn, worden Option<T>. Vink Skip serializing None aan om ze bij het serialiseren weg te laten.
Kan ik de zichtbaarheid van velden wijzigen?
Ja. Kies pub-, pub(crate)- of private velden en schakel de derives Debug en Clone in of uit.
Wordt mijn JSON geüpload?
Nee. De code wordt lokaal in je browser gegenereerd.
Advertentie