Rust 序列化、反序列化实现

2023-10-23 rust language

Serde 是序列化和反序列化 Rust 数据结构的库,支持 JSON、BSON、YAML 等多种常用格式,并且可以自定义序列化和反序列化方式。

简介

特点是代码简洁、易于使用、性能高效,也是 Rust 生态中最受欢迎的序列化库之一,如下是一个简单的示例。

Cargo.toml 中增加如下的依赖关系。

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

然后示例代码为。

use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize)]
struct Point {
    x: i32,
    y: i32,
}

fn main() {
    let point = Point{x: 1, y: 2};

    let pstr = serde_json::to_string(&point).unwrap();
    println!("Serialized Point {}", pstr);

    let pnew: Point = serde_json::from_str(&pstr).unwrap();
    println!("Deserialize {:?}", pnew);
}

其中关键的是派生宏,也就是需要 features=["derive"] 开启,然后就可以在结构体中添加 #[derive(Serialize, Deserialize)] 注解。