Klistra in Rust till vänster och klicka på "Konvertera" — vi gör JSON av detKlistra in Rust-kod

Vad verktyget gör

Om du någon gång har definierat en struct, slängt #[derive(Serialize)] på den och insett att du bara vill ha JSON utan att skriva serde-boilerplate, lägga till serde_json i Cargo.toml och köra cargo run — då gör det här verktyget precis det. Klistra in din Rust här och få giltig JSON tillbaka utan att röra cargo. Den klarar en enskild struct-literal, en hel modul med flera typer eller något med djupt nästlade Vec och Option — samma resultat: ett rent JSON-dokument med varje fält bevarat.

Konverteraren följer hur serde faktiskt serialiserar värden. String och &str blir JSON-strängar. i32, u64, f32, f64 blir alla JSON-tal. bool blir true/false. Vec<T>, &[T] och [T; N] blir JSON-arrayer. HashMap<String, V> / BTreeMap<String, V> blir JSON-objekt. Option<T> med None blir JSON-null; med Some(value) serialiseras den inre typen. Tupler kommer ut som heterogena arrayer — exakt det beteendet som dokumenteras på serde.rs/data-model.

Serde-attribut respekteras. #[serde(rename = "x")] döper om JSON-nyckeln, #[serde(skip)] tar bort fältet och #[serde(flatten)] lyfter fält från en nästlad struct upp till föräldraobjektet. enum-typer följer externally-tagged-representationen som standard (konfigurerbart med #[serde(tag = "type")]). Klistra in flera structs på en gång och var och en kommer ut som en toppnivåpost. Om du jobbar med webtjänster byggda på Rusts standardbibliotek plus axum/actix så landar det här direkt i dina integrationstester.

Så här använder du det

Tre steg. Funkar likadant oavsett om du klistrar in en struct eller en hel modul med ett dussin typer.

1

Klistra in din Rust (eller ladda exemplet)

Släng in din Rust i vänstra editorn som den är. En struct, en tuple struct, en enum med varianter, flera typer eller nästlade Vec/Option/HashMap — allt funkar. Klicka på Ladda exempel för att se ett realistiskt fall först.

Du behöver inte ta bort use-satser, lifetimes eller derive-attribut. Låt Rust-syntaxen vara som den är — serde-attributen är en del av det parsern läser.

2

Tryck på Konvertera

Klicka på den gröna Konvertera-knappen. Verktyget läser Rusten, bevarar varje struct och fält och skickar ut JSON i en svep. En kort laddningsindikator snurrar under tiden.

3

Kopiera JSON

Högra panelen fylls med indenterad JSON. Kopiera den till ett reqwest-test, ett axum-integrationstest, dina OpenAPI-exempel eller ett curl-kommando. Ingen ombyggnad behövs.

När det här verkligen kommer till nytta

Fixtures för webtjänster

Du har en axum- eller actix-request-struct och behöver JSON till ett test eller ett curl-anrop. Klistra in structen, ta JSON, kör vidare — ingen cargo-cykel.

Config-mallar för CLI:er

En clap-driven CLI med en Config-struct. Konvertera den till en JSON-mall som användare kan redigera, utan att skriva en egen <code>Default</code>-impl bara för dokumentationen.

Seeds till integrationstester

Gör om struct-literalerna från dina enhetstester till JSON-seed-filer för integrationstester, mock-servrar eller fixtures till inbäddade databaser.

Dokumentation som följer koden

Generera JSON-exempel till din README eller OpenAPI-spec direkt från de riktiga Rust-typerna, så slutar dokumentationen glida iväg.

Vanliga frågor

Behöver jag serde och serde_json i min Cargo.toml?

Inte för det här verktyget — det kör på serversidan och kompilerar inte din kod. För runtime-användning i din egen app är serde med derive-featuren plus serde_json standardkombinationen.

Respekterar det #[serde(rename)], #[serde(skip)] och #[serde(flatten)]?

Ja. #[serde(rename = "x")] döper om JSON-nyckeln, #[serde(skip)] tar bort fältet ur utmatningen och #[serde(flatten)] lyfter nästlade struct-fält till föräldern — precis som dokumentationen för serde field attributes beskriver.

Hur hanteras Option, Vec och HashMap?

Option<T> med None blir JSON-null; med Some(v) serialiseras det inre värdet. Vec<T>, slices och arrayer blir JSON-arrayer. HashMap<String, V> och BTreeMap<String, V> blir JSON-objekt; mappar med icke-string-nycklar får nycklarna stringifierade.

Vad gäller för enums med varianter?

Som standard använder enum-varianter externally-tagged-representationen ({ "VariantName": {...} }). Attributen #[serde(tag = "type")], #[serde(untagged)] och #[serde(content = "data")] växlar till internally-tagged, untagged eller adjacently-tagged — verktyget läser de attributen och matar ut därefter.

Sparas min kod?

Din kod skickas till backend för konvertering och lagras inte — vi loggar inte payloaden. Gå igenom känslig kod innan du klistrar in.

Vad händer om Rust-koden använder lifetimes eller generics?

Lifetimes (&'a str) ignoreras — JSON har inget begrepp för dem. Konkretiserade generics (Vec<User>) funkar. Oinstansierade generics kommer ut som null. Makron som expanderar till riktig syntax funkar; makron som förlitar sig på en proc-macro-crate som inte syns här behandlas som opaka.

Andra verktyg som kan komma till användning

Rust till JSON är bara en bit av pusslet. De här sitter bra ihop: