本文以 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();
}