Rust:
Praca z JSON

Jak to zrobić:

Aby pracować z JSON w Rust, intensywnie używa się skrzynki serde wraz z serde_json do serializacji i deserializacji. Najpierw upewnij się, że dołączysz te do swojego Cargo.toml:

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

Przykład 1: Deserializacja JSON do struktury Rust

Zdefiniuj strukturę Rust i użyj makr pochodnych dla Deserialize i 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!("ID użytkownika: {}", user.id);
    println!("Nazwa użytkownika: {}", user.name);
    println!("Email użytkownika: {}", user.email);
}

Wyjście:

ID użytkownika: 1
Nazwa użytkownika: Jane Doe
Email użytkownika: [email protected]

Przykład 2: Serializacja struktury Rust do JSON

Używając tej samej struktury 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);

Wyjście:

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

Te przykłady demonstrują podstawowy przepływ deserializacji JSON do struktur Rust i serializacji struktur Rust z powrotem do łańcuchów JSON. Serde dostarcza bogaty zestaw narzędzi do pracy z JSON, w tym obsługę pól opcjonalnych, złożone zagnieżdżenia i typy nieobsługiwane bezpośrednio przez JSON.