本文以 JSON 格式的文件为例,展示在 Rust 中如何使用serde读取和保存 JSON 文件;

要实现读取和保存 JSON 文件,主要使用以下两个函数实现:

  • serde_json::from_reader,从支持io::Read Trait 的对象中读取数据并解析;
  • serde_json::to_writer,将给定的数据结构序列化为 JSON 格式并写入实现了io::Write Trait 的对象中;

参考:

从文件中读取

将以下 json 数据保存为config.json文件:

{
    "ip": "127.0.0.1",
    "port": 80
}

config.json中读取数据,并反序列化:

use serde::{Deserialize, Serialize};
use std::fs::File;
use std::io::BufReader;

#[derive(Deserialize, Serialize)]
struct Config {
    ip: String,
    port: u16,
}

fn main() {

    let file = File::open("config.json").unwrap();

    let reader = BufReader::new(file);

    let config: Config = serde_json::from_reader(reader).unwrap();

    println!("{}:{}", config.ip,config.port);

}

保存为文件

将数据结构序列化为 JSON,并写入文件:

use serde::{Deserialize, Serialize};
use std::fs::File;
use std::io::BufWriter;

#[derive(Deserialize, Serialize)]
struct Config {
    ip: String,
    port: u16,
}

fn main() {

    let config = Config {
        ip : String::from("127.0.0.1"),
        port : 80,
    };

    let file = File::create("saved.json").unwrap();
    let writer = BufWriter::new(file);

    serde_json::to_writer(writer, &config).unwrap();
}