于 Cargo.toml 文件中添加依赖:
[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_json = { version = "1.0" }
为需要序列化的类型实现 Serialize
trait;为需要反序列化的类型实现 Deserialize
trait。
use serde::{Serialize, Deserialize};
use serde_json;
#[derive(Debug, Serialize, Deserialize)]
struct User {
id: u32,
name: String,
}
fn serialize() {
let user = User {
id: 1u32,
name: "Mike".into(),
};
// 序列化为字符串
let s1 = serde_json::to_string(&user).unwrap();
let s2 = serde_json::to_string_pretty(&user).unwrap();
println!("{}", s1);
println!("{}", s2);
// 将序列化后的内容通过指定的 writer 输出
serde_json::to_writer(std::io::stdout(), &user).unwrap();
println!();
serde_json::to_writer_pretty(std::io::stdout(), &user).unwrap();
println!();
}
fn deserialize() {
let s = r#"
{
"id": 1,
"name": "Mike"
}
"#;
let user: User = serde_json::from_str(s).unwrap();
println!("{:?}", user);
}
fn main() {
println!("序列化:");
serialize();
println!("反序列化:");
deserialize();
}
结果:
序列化:
{"id":1,"name":"Mike"}
{
"id": 1,
"name": "Mike"
}
{"id":1,"name":"Mike"}
{
"id": 1,
"name": "Mike"
}
反序列化:
User { id: 1, name: "Mike" }