Rust Json序列化与反序列化

于 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" }
上一篇:PHP中奖概率的抽奖算法程序代码


下一篇:如何测试网页在firefox下的国际化