Leer programmeren met Rust · Les

Aangepaste serialisatie

Veldattributen

Les 3 van 413 stappen

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:

  • rename en rename_all koppelen veldnamen
  • skip en skip_serializing_if bepalen de uitvoer
  • default en alias vereenvoudigen deserialisatie
  • flatten, with en enum-tag verwerken de structuur

Volgende: indelingen naast JSON.

Gratis beginnen

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

  1. Serialiseren en deserialiseren
  2. Werken met JSON
  3. Aangepaste serialisatie
  4. Andere formaten
← Terug naar Leer programmeren met Rust