Rust:
Werken met JSON

Hoe te:

In Rust zijn de serde en serde_json crates de go-to bibliotheken voor werk met JSON. Hier is hoe je ze gebruikt:

Voeg eerst afhankelijkheden toe in Cargo.toml:

[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"

Importeer vervolgens de crates en definieer een struct om je gegevens te vertegenwoordigen:

extern crate serde;
extern crate serde_json;

#[macro_use]
extern crate serde_derive;

#[derive(Serialize, Deserialize, Debug)]
struct Gebruiker {
    id: u64,
    naam: String,
    email: String,
}

fn main() {
    // Serialiseren
    let gebruiker = Gebruiker {
        id: 1,
        naam: "Jane Doe".to_string(),
        email: "[email protected]".to_string(),
    };
    let j = serde_json::to_string(&gebruiker).unwrap();
    println!("{}", j); // {"id":1,"naam":"Jane Doe","email":"[email protected]"}

    // Deserialiseren
    let e: Gebruiker = serde_json::from_str(&j).unwrap();
    println!("{:?}", e);  // Gebruiker { id: 1, naam: "Jane Doe", email: "[email protected]" }
}

Diepgang:

Het serde bibliotheeksysteem is sinds de release in 2015 de de facto oplossing van Rust voor serialisatie. Het ondersteunt veel formaten naast JSON. Afwisselend kun je json-rust of simd-json tegenkomen, die verschillende prestatieafwegingen bieden. Een cruciaal implementatiedetail om te begrijpen is dat serde deserialisatie vereist dat gegevensstructuren bekend zijn op compileertijd, wat niet het geval is bij meer dynamische talen zoals JavaScript.

Zie Ook:

  • Serde’s officiële documentatie biedt een uitgebreide handleiding: Serde Documentatie
  • De onderliggende details van de serde_json crate: serde_json Crate
  • Meer over JSON zelf: Introductie van JSON
  • Voor asynchroon programmeren met JSON worden tokio en async-std vaak gebruikt in combinatie met serde_json.