Aangepaste serialisatie
Veldattributen
Aangepaste serialisatie is een gratis Leer programmeren met Rust-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Leer programmeren met Rust. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Leer programmeren met Rust bevat in totaal 4 lessen.
serde aanpassen
serde geeft je nauwkeurige controle over hoe velden aan een indeling worden gekoppeld met attributen. Je kunt velden hernoemen of overslaan, standaardwaarden instellen en meer, allemaal via #[serde(...)].
Een veld hernoemen
Gebruik rename om een Rust-veldnaam aan een andere sleutel in de uitvoer te koppelen. Dit is handig wanneer JSON een andere naamgevingsconventie gebruikt.
use serde::Serialize;
#[derive(Serialize)]
struct User {
#[serde(rename = "userName")]
user_name: String,
}Alles hernoemen
Pas met rename_all in één keer een naamgevingsconventie toe op alle velden, bijvoorbeeld snake_case in Rust naar camelCase in JSON.
use serde::Serialize;
#[derive(Serialize)]
#[serde(rename_all = "camelCase")]
struct User {
first_name: String,
last_name: String,
}Velden overslaan
skip laat een veld volledig weg. skip_serializing_if laat het voorwaardelijk weg, bijvoorbeeld om lege opties te verbergen.
use serde::Serialize;
#[derive(Serialize)]
struct User {
name: String,
#[serde(skip_serializing_if = "Option::is_none")]
nickname: Option<String>,
}Standaardwaarden bij deserialiseren
default levert een waarde wanneer een veld in de invoer ontbreekt, zodat deserialisatie niet mislukt.
use serde::Deserialize;
#[derive(Deserialize)]
struct Config {
#[serde(default)]
retries: u32,
}Aangepaste standaardfunctie
Laat default naar een functie verwijzen om een niet-nul-terugvalwaarde te leveren.
use serde::Deserialize;
fn default_port() -> u16 { 8080 }
#[derive(Deserialize)]
struct Config {
#[serde(default = "default_port")]
port: u16,
}Hernoemen en standaardwaarde modelleren
De logica van het attribuut bestaat uit sleuteltoewijzing plus een terugvalwaarde. Dit uitvoerbare voorbeeld bootst dat gedrag na met een HashMap.
use std::collections::HashMap;
fn main() {
let mut input: HashMap<&str, &str> = HashMap::new();
input.insert("userName", "Alice");
let user_name = input.get("userName").copied().unwrap_or("anon");
let port = input.get("port").copied().unwrap_or("8080");
println!("user_name={} port={}", user_name, port);
}Aliassen bij deserialiseren
alias accepteert bij het lezen een alternatieve sleutel. Dat is handig wanneer je zowel oude als nieuwe veldnamen ondersteunt.
use serde::Deserialize;
#[derive(Deserialize)]
struct User {
#[serde(alias = "username")]
name: String,
}Flatten
flatten voegt de velden van een geneste struct rechtstreeks in het bovenliggende object in, waardoor één niveau nesting uit de JSON verdwijnt.
use serde::Serialize;
#[derive(Serialize)]
struct Meta { page: u32 }
#[derive(Serialize)]
struct Resp {
data: String,
#[serde(flatten)]
meta: Meta,
}Aangepast met een module
Voor volledige controle laat je with verwijzen naar een module die serialize- en deserialize-functies beschikbaar stelt, bijvoorbeeld om een tijdstempel op te maken.
use serde::Serialize;
#[derive(Serialize)]
struct Event {
#[serde(with = "my_date_format")]
at: i64,
}Enum-labels
Bepaal met tag (intern gelabeld) of untagged hoe enums worden gecodeerd. Dit bepaalt de JSON-structuur voor varianttypen.
use serde::Serialize;
#[derive(Serialize)]
#[serde(tag = "type")]
enum Event {
Click { x: i32, y: i32 },
Key { code: u8 },
}Korte controle
Test je begrip van aangepaste serialisatie.
Samenvatting
Je hebt geleerd hoe je serialisatie aanpast:
renameenrename_allkoppelen veldnamenskipenskip_serializing_ifbepalen de uitvoerdefaultenaliasvereenvoudigen deserialisatieflatten,withen enum-tagverwerken de structuur
Volgende: indelingen naast JSON.
Leer Rust met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 39
- Lessen
- 144
Veelgestelde vragen
Is de les “Aangepaste serialisatie” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Leer programmeren met Rust, waaronder “Aangepaste serialisatie”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Leer programmeren met Rust bevat in totaal 4 lessen.
Wat leer ik in “Aangepaste serialisatie”?
Veldattributen Je oefent met Leer programmeren met Rust door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Leer programmeren met Rust te beginnen?
Ervaring vooraf is niet nodig. Leer programmeren met Rust op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “Aangepaste serialisatie”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Leer programmeren met Rust?
Ja. Elke les over Leer programmeren met Rust bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Serialiseren en deserialiseren
- Werken met JSON
- Aangepaste serialisatie
- Andere formaten