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.