Rust:
עבודה עם JSON

איך לעשות:

כדי לעבוד עם JSON ב-Rust, משתמשים באופן נרחב ב-crate של serde יחד עם serde_json לצורך סידור ופרסור מחדש. ראשית, וודאו לכלול אותם בקובץ Cargo.toml שלכם:

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

דוגמה 1: פרסור מחדש של JSON למבנה של Rust

הגדרת מבנה של Rust ושימוש במקרו של derive לDeserialize וגם לSerialize:

use serde::{Deserialize, Serialize};

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

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

    let user: User = serde_json::from_str(json_data).unwrap();

    println!("מזהה משתמש: {}", user.id);
    println!("שם משתמש: {}", user.name);
    println!("דואר אלקטרוני של משתמש: {}", user.email);
}

פלט:

מזהה משתמש: 1
שם משתמש: Jane Doe
דואר אלקטרוני של משתמש: [email protected]

דוגמה 2: סידור מחדש של מבנה של Rust ל-JSON

בשימוש באותו מבנה של User:

let user = User {
    id: 1,
    name: "Jane Doe".to_string(),
    email: "[email protected]".to_string(),
};

let json_data = serde_json::to_string(&user).unwrap();

println!("{}", json_data);

פלט:

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

דוגמאות אלו מדגימות את התזרים הבסיסי של פרסור מחדש של JSON לתוך מבנים של Rust וסידור מבנים של Rust בחזרה למחרוזות של JSON. Serde מספקת ערכת כלים עשירה לעבודה עם JSON, כולל טיפול בשדות אופציונליים, קינונים מורכבים וסוגים שאינם נתמכים ישירות על ידי JSON.