Plak Rust links en klik op "Converteren" — wij maken er JSON vanPlak Rust-code

Wat deze tool doet

Als je ooit een struct hebt gedefinieerd, er #[derive(Serialize)] op hebt gekwakt en beseft dat je eigenlijk alleen de JSON wilt — zonder het serde-boilerplate te schrijven, serde_json aan je Cargo.toml toe te voegen en cargo run te draaien — dan doet deze tool precies dat. Plak je Rust hier en krijg geldige JSON terug zonder cargo aan te raken. Hij kan overweg met een enkel struct-literal, een heel module met meerdere types, of iets met diep geneste Vec en Option — zelfde resultaat: een schoon JSON-document waarin elk veld bewaard blijft.

De converter volgt hoe serde waarden daadwerkelijk serialiseert. String en &str worden JSON-strings. i32, u64, f32, f64 worden JSON-getallen. bool wordt true/false. Vec<T>, &[T] en [T; N] worden JSON-arrays. HashMap<String, V> / BTreeMap<String, V> worden JSON-objects. Option<T> met None wordt JSON-null; met Some(value) wordt het binnenste type geserialiseerd. Tuples komen eruit als heterogene arrays — precies zoals gedocumenteerd op serde.rs/data-model.

Serde-attributen worden gerespecteerd. #[serde(rename = "x")] hernoemt de JSON-key, #[serde(skip)] haalt het veld weg en #[serde(flatten)] tilt de velden van een geneste struct naar het parent-object. enum-types volgen standaard de externally-tagged representatie (configureerbaar met #[serde(tag = "type")]). Plak meerdere structs tegelijk en elk komt er als top-level entry uit. Als je webservices bouwt op de Rust-standaardbibliotheek plus axum/actix, valt deze output direct in je integratietests.

Hoe je hem gebruikt

Drie stappen. Werkt hetzelfde of je nu één struct-literal of een hele module met een dozijn types plakt.

1

Plak je Rust (of laad het voorbeeld)

Kieper je Rust gewoon in de linker editor. Een struct, een tuple struct, een enum met varianten, meerdere types of geneste Vec/Option/HashMap — allemaal prima. Klik op Voorbeeld laden om eerst een realistisch voorbeeld te zien.

Je hoeft use-statements, lifetimes of derive-attributen niet te verwijderen. Laat de Rust-syntax staan zoals die is — de serde-attributen zijn onderdeel van wat de parser leest.

2

Klik op Converteren

Klik op de groene Converteren-knop. De tool leest de Rust, behoudt elke struct en elk veld en stuurt de JSON in één keer uit. Tijdens het verwerken draait een kort laadindicatortje.

3

Kopieer de JSON

Het rechterpaneel vult zich met ingesprongen JSON. Kopieer hem naar een reqwest-test, een axum-integratietest, je OpenAPI-voorbeelden of een curl-commando. Geen rebuild nodig.

Wanneer dit echt handig is

Fixtures voor webservices

Je hebt een axum- of actix-request-struct en je hebt JSON nodig voor een test of curl-call. Plak de struct, pak de JSON, klaar — geen cargo-cyclus.

Config-templates voor CLIs

Een clap-gedreven CLI met een Config-struct. Converteer hem naar een JSON-template dat gebruikers kunnen aanpassen, zonder alleen voor de docs een eigen <code>Default</code>-impl te schrijven.

Seeds voor integratietests

Maak van de struct-literals uit je unit-tests JSON-seed-bestanden voor integratietests, mockservers of fixtures voor embedded databases.

Docs die met de code meelopen

Genereer JSON-voorbeelden voor je README of OpenAPI-spec direct uit de echte Rust-types, zodat de docs niet meer gaan afdrijven.

Veelgestelde vragen

Heb ik serde en serde_json nodig in mijn Cargo.toml?

Voor deze tool niet — hij draait server-side en compileert jouw code niet. Voor runtime-gebruik in je eigen app is serde met de derive-feature plus serde_json de standaardcombinatie.

Respecteert hij #[serde(rename)], #[serde(skip)] en #[serde(flatten)]?

Ja. #[serde(rename = "x")] hernoemt de JSON-key, #[serde(skip)] haalt het veld uit de output en #[serde(flatten)] tilt geneste struct-velden naar de parent — precies zoals de documentatie van serde-field-attributes beschrijft.

Hoe worden Option, Vec en HashMap behandeld?

Option<T> met None wordt JSON-null; met Some(v) wordt de binnenste waarde geserialiseerd. Vec<T>, slices en arrays worden JSON-arrays. HashMap<String, V> en BTreeMap<String, V> worden JSON-objects; bij maps met niet-string keys worden die keys naar strings omgezet.

En enums met varianten?

Standaard gebruiken enum-varianten de externally-tagged representatie ({ "VariantName": {...} }). De attributen #[serde(tag = "type")], #[serde(untagged)] en #[serde(content = "data")] schakelen over naar internally-tagged, untagged of adjacently-tagged — de tool leest die attributen en produceert de output overeenkomstig.

Wordt mijn code opgeslagen?

Je code wordt naar de backend gestuurd voor conversie en wordt niet bewaard — we loggen de payload niet. Loop gevoelige code even na voordat je hem plakt.

En als de Rust lifetimes of generics gebruikt?

Lifetimes (&'a str) worden genegeerd — JSON kent het begrip niet. Concrete generics (Vec<User>) werken. Niet-geïnstantieerde generics komen eruit als null. Macros die naar echte syntax expanderen werken; macros die afhankelijk zijn van een proc-macro-crate die hier niet zichtbaar is, worden als opaak behandeld.

Andere tools die je nodig kunt hebben

Rust naar JSON is maar één puzzelstukje. Deze combineren goed: