Rust Serde 处理 JSON 与配置文件
wxk1991 Lv5

Rust Serde 处理 JSON 与配置文件

Serde 是 Rust 生态中最常用的序列化和反序列化库。无论是处理 HTTP JSON、读取配置文件,还是保存本地数据,Serde 都是绕不开的基础工具。


一、添加依赖

1
2
3
[dependencies]
serde = { version = "1", features = ["derive"] }
serde_json = "1"

二、定义结构体

1
2
3
4
5
6
7
8
use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize)]
struct User {
id: u64,
name: String,
active: bool,
}

Serialize 用于转成 JSON,Deserialize 用于从 JSON 转回结构体。


三、结构体转 JSON

1
2
3
4
5
6
7
8
let user = User {
id: 1,
name: "Alice".to_string(),
active: true,
};

let text = serde_json::to_string_pretty(&user).unwrap();
println!("{}", text);

四、JSON 转结构体

1
2
3
let raw = r#"{"id":1,"name":"Alice","active":true}"#;
let user: User = serde_json::from_str(raw).unwrap();
println!("{:?}", user);

字段类型不匹配时,Serde 会返回错误,而不是悄悄给你一个错误对象。


五、字段重命名

接口字段经常是 snake_case 或 camelCase,可以用属性处理:

1
2
3
4
5
6
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
struct ApiUser {
user_id: u64,
user_name: String,
}

六、实践建议

接口层结构体和数据库实体不要强行共用。接口字段会跟着外部协议变化,数据库实体会跟着存储设计变化,把它们分开能减少后续维护成本。

Serde 的优势不只是方便,而是让数据边界变得明确。