Rust:
使用JSON进行编程

如何操作:

在 Rust 中处理 JSON,广泛使用 serde 创建以及 serde_json 来进行序列化和反序列化。首先,确保在你的 Cargo.toml 中包含它们:

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

示例 1:将 JSON 反序列化为 Rust 结构体

定义一个 Rust 结构体,并使用 DeserializeSerialize 的派生宏:

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: {}", user.id);
    println!("用户名: {}", user.name);
    println!("用户邮箱: {}", user.email);
}

输出:

用户 ID: 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 不直接支持的类型。