MST

星途 面试题库

面试题:Rust中如何使用serde进行基础类型的序列化与反序列化

请说明在Rust中,若要对一个包含i32、String类型成员的结构体进行序列化和反序列化操作,使用serde库的步骤是怎样的?请写出必要的代码示例,包括引入的crate、结构体定义、序列化和反序列化的实现。
11.6万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
  1. 引入serde及其相关序列化/反序列化格式的crate: 假设使用serde_json作为序列化和反序列化的格式,在Cargo.toml中添加:
[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
  1. 结构体定义及serde派生宏使用
use serde::{Serialize, Deserialize};

#[derive(Serialize, Deserialize)]
struct MyStruct {
    num: i32,
    text: String,
}
  1. 序列化示例
use serde_json;

fn main() {
    let my_struct = MyStruct {
        num: 42,
        text: String::from("Hello, world!"),
    };

    let serialized = serde_json::to_string(&my_struct).expect("Serialization failed");
    println!("Serialized: {}", serialized);
}
  1. 反序列化示例
use serde_json;

fn main() {
    let json_str = r#"{"num": 42, "text": "Hello, world!"}"#;

    let deserialized: MyStruct = serde_json::from_str(json_str).expect("Deserialization failed");
    println!("Deserialized: num = {}, text = {}", deserialized.num, deserialized.text);
}