Rust:
Travailler avec JSON

Comment faire :

Pour travailler avec le JSON en Rust, on utilise largement le crate serde ainsi que serde_json pour la sérialisation et la désérialisation. Tout d’abord, assurez-vous de les inclure dans votre Cargo.toml :

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

Exemple 1 : Désérialiser du JSON vers une structure Rust

Définissez une structure Rust et utilisez les macros derive pour Deserialize et Serialize :

use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize)]
struct Utilisateur {
    id: u32,
    nom: String,
    email: String,
}

fn main() {
    let donnees_json = r#"
        {
            "id": 1,
            "nom": "Jane Doe",
            "email": "[email protected]"
        }
    "#;

    let utilisateur: Utilisateur = serde_json::from_str(donnees_json).unwrap();

    println!("ID Utilisateur : {}", utilisateur.id);
    println!("Nom Utilisateur : {}", utilisateur.nom);
    println!("Email Utilisateur : {}", utilisateur.email);
}

Sortie :

ID Utilisateur : 1
Nom Utilisateur : Jane Doe
Email Utilisateur : [email protected]

Exemple 2 : Sérialiser une structure Rust en JSON

En utilisant la même structure Utilisateur :

let utilisateur = Utilisateur {
    id: 1,
    nom: "Jane Doe".to_string(),
    email: "[email protected]".to_string(),
};

let donnees_json = serde_json::to_string(&utilisateur).unwrap();

println!("{}", donnees_json);

Sortie :

{"id":1,"nom":"Jane Doe","email":"[email protected]"}

Ces exemples démontrent le processus de base pour désérialiser le JSON en structures Rust et pour sérialiser les structures Rust en chaînes JSON. Serde offre un ensemble riche d’outils pour travailler avec le JSON, incluant la gestion des champs optionnels, l’imbrication complexe, et les types non directement supportés par JSON.