JSON naar Rust struct omzetter
Plak JSON en krijg direct idiomatische Rust-serde-structs. 100% in je browser — data verlaat de pagina nooit. Correcte i64/u64/f64-typen, Option voor null, #[serde(rename)] voor camelCase. Gratis.
Opties
Gebouwd en gecontroleerd door ontwikkelaars die met Rust en getypeerde API's werken.
Wat is JSON naar Rust-conversie?
JSON naar Rust-conversie zet een JSON-voorbeeld om in compileerklare Rust-structs met de macro's #[derive(Serialize, Deserialize)] van serde, zodat je nooit deserialisatie-boilerplate voor API-responses of configuratiebestanden met de hand schrijft. Deze snelle Rust-struct-generator leidt correcte getaltypen af, markeert ontbrekende velden als Option en voegt #[serde(rename)] toe voor sleutels die geen snake_case zijn — allemaal 100% in je browser.
Voorbeelden
API-respons
{"id":101,"name":"Ada Lovelace","email":"ada@example.com","active":true,"roles":["admin","user"]} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub id: i64,
pub name: String,
pub email: String,
pub active: bool,
pub roles: Vec<String>,
}
Een typische REST-payload wordt een serde-klare struct die je rechtstreeks in je client kunt plaatsen. Getallen worden i64, arrays worden Vec<String>.
Genest object
{"repo":"serde","owner":{"login":"dtolnay","id":100}} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub repo: String,
pub owner: Owner,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Owner {
pub login: String,
pub id: i64,
}
Geneste objecten worden afzonderlijke, benoemde structs (Owner) waarnaar per veld wordt verwezen — identieke vormen worden ontdubbeld.
Array van objecten (optioneel veld)
{"users":[{"id":1,"nick":"x"},{"id":2}]} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub users: Vec<User>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct User {
pub id: i64,
pub nick: Option<String>,
}
Arrays van objecten worden samengevoegd tot één element-struct. Sleutels die in sommige items ontbreken, worden Option<String> — geen #[serde(default)] nodig.
camelCase-sleutels
{"login":"octocat","publicRepos":15,"followerCount":9001,"createdAt":"2011-01-25"} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub login: String,
#[serde(rename = "publicRepos")]
pub public_repos: i64,
#[serde(rename = "followerCount")]
pub follower_count: i64,
#[serde(rename = "createdAt")]
pub created_at: String,
}
Velden worden snake_case met #[serde(rename)] die terugverwijst naar de originele JSON-sleutel. Sleutels die al snake zijn, zoals login, krijgen geen rename.
Zo zet je JSON om naar Rust
- 1
Plak je JSON
Zet een JSON-object, array of API-respons in het invoerveld. De conversie start direct.
- 2
Stem de uitvoer af
Hernoem het root-struct en schakel serde-derives, Debug en Clone of de pub-zichtbaarheid om, passend bij de stijl van je crate.
- 3
Kopieer of download
Haal de gegenereerde Rust met één klik op en plak het rechtstreeks in je project.
Common Use Cases
- Getypeerde API-clients
- Zet een voorbeeldrespons van REST of GraphQL om in serde-structs voor een reqwest- of vergelijkbare client, zonder deserialisatie-boilerplate met de hand te schrijven.
- Config- en fixture-parsing
- Genereer structs voor JSON-configuratiebestanden, testfixtures of webhook-payloads die je met serde_json moet deserialiseren.
- Snel prototypen
- Plak een onbekende payload om de vorm ervan direct als Rust-types te zien — een snelle manier om een nieuwe API te verkennen voordat je die aansluit.
Hoe de conversie werkt
- Structurele afleiding
- Elk object wordt een benoemd struct; identieke vormen worden ontdubbeld, zodat je één struct krijgt en geen kopieën. Arrays van objecten worden sleutel voor sleutel samengevoegd, en sleutels die in sommige items ontbreken, worden Option<T>.
- Correcte getaltypering
- Gehele getallen worden i64, gaan voorbij i64::MAX over naar u64 en vallen voorbij u64 terug op f64. Floats worden herkend aan het token (1.0, 2e3), zodat de serde-deserialisatie nooit faalt op een float-in-integer-conflict.
- Idiomatische, compileerbare identifiers
- Sleutels worden snake_case-velden met #[serde(rename)] terug naar de originele sleutel; Rust-sleutelwoorden, dubbele namen en niet-identifier-sleutels worden opgeschoond, zodat de uitvoer altijd compileert.
- 100% aan de clientzijde
- Het verwerken en genereren draait in je browser zonder netwerkaanroepen, zodat je data privé blijft.
Tips voor schone Rust-structs
- Geef je root-struct een naam
- Stel een betekenisvolle rootnaam in (bijv. User, ApiResponse) in plaats van de standaard Root voor leesbare code.
- Voeg serde_json alleen toe wanneer nodig
- serde_json::Value verschijnt bij lege of gemengde arrays en velden die alleen null zijn. Geef die velden waar mogelijk een concreet type uit een rijker voorbeeld, of voeg serde_json toe aan Cargo.toml.
- Beoordeel Option versus verplicht
- Velden worden alleen als Option<T> gemarkeerd wanneer een voorbeeld ze weglaat. Plak een representatieve payload zodat de tool verplichte en optionele velden nauwkeurig afleidt.
Veelgestelde vragen
Hoe zet ik JSON om naar een Rust-struct?
Genereert het serde-derives? Heb ik serde en serde_json nodig?
Hoe gebruik ik het gegenereerde struct om JSON te parsen?
Hoe worden optionele en null-velden afgehandeld?
Hoe gaat het om met camelCase-sleutels en Rust-sleutelwoorden?
Kan het #[serde(rename_all)] gebruiken in plaats van renames per veld?
Welk Rust-getaltype gebruikt het?
Hoe worden datums en tijdstempels getypeerd?
Hoe ga ik om met objecten met dynamische of onbekende sleutels?
Zijn mijn JSON-gegevens privé en veilig?
Kan ik kale Rust-structs zonder serde genereren?
Is de tool gratis? Heb ik een account nodig?
Gerelateerde tools
Alle tools bekijken →ASCII-tabel en ASCII-converter
Encodering en formattering
De volledige ASCII-tabel: 128 tekens in decimaal, hex, octaal en binair, plus een converter die beide kanten op werkt. Stuurtekens met escape-sequenties, caret-notatie en de plek waar je ze echt tegenkomt.
Gratis barcodegenerator — EAN-13, UPC-A & Code 128
Encodering en formattering
Genereer EAN-13, UPC-A, Code 128, Code 39 en 11 andere soorten barcodes als SVG of afdrukklare PNG. Typ 12 cijfers; het controlecijfer wordt aangevuld. Is er één fout, dan noemen we het cijfer dat het moet zijn.
Base64 decoderen en encoderen online
Encodering en formattering
Base64 decoderen en encoderen direct in je browser. Realtime conversie met volledige UTF-8- en emoji-ondersteuning. 100% privé — geen account nodig.
Base64 naar afbeelding converter
Encodering en formattering
Decodeer een Base64-string of data-URI terug naar een afbeelding in je browser. Bekijk voorbeeld, lees afmetingen & MIME, download als PNG, JPG, GIF, SVG. Geen upload.
Base64 naar PDF & bestand omzetten · PDF naar Base64
Encodering en formattering
Base64 naar PDF online: plak kale Base64, een data-URI of het hele JSON-antwoord. Herkent het echte bestandstype, toont een voorbeeld, downloadt het en waarschuwt bij afgekapte PDF's. Ook PDF naar Base64. Er wordt niets geüpload.
CSV naar JSON omzetter
Encodering en formattering
Zet CSV om naar JSON in uw browser. RFC 4180, type-afleiding, headerregel, big-int veilig. 100% privé, geen upload.