Rust序列化与反序列化:Serde完全指南
3 阅读
预计 3 分钟
Serde是Rust生态中最常用的序列化框架,几乎所有Rust项目都在使用。
## 基本用法
```rust
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug)]
struct User {
name: String,
age: u32,
emails: Vec,
}
let user = User {
name: "Alice".to_string(),
age: 30,
emails: vec!["alice@example.com".to_string()],
};
let json = serde_json::to_string(&user).unwrap();
let user2: User = serde_json::from_str(&json).unwrap();
```
## 自定义序列化
```rust
#[derive(Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
struct ApiRequest {
#[serde(rename = "user_id")]
id: u64,
#[serde(skip_serializing_if = "Option::is_none")]
nickname: Option,
#[serde(default)]
active: bool,
}
```
## 枚举处理
```rust
#[derive(Serialize, Deserialize)]
#[serde(tag = "type", content = "value")]
echo Message {
Text(String),
Number(i32),
Flag(bool),
}
```
## 多格式支持
```rust
let config: Config = toml::from_str(&toml_str).unwrap();
let data: Data = serde_yaml::from_str(&yaml_str).unwrap();
let bytes = bincode::serialize(&data).unwrap();
let data2: Data = bincode::deserialize(&bytes).unwrap();
```
Serde是Rust生态的基石,掌握它对任何Rust开发者都至关重要。
0 条评论 欢迎参与讨论