本文以 JSON 格式的文件为例,展示在 Rust 中如何使用serde读取和保存 JSON 文件;
要实现读取和保存 JSON 文件,主要使用以下两个函数实现:
serde_json::from_reader,从支持io::ReadTrait 的对象中读取数据并解析;serde_json::to_writer,将给定的数据结构序列化为 JSON 格式并写入实现了io::WriteTrait 的对象中;
参考:
从文件中读取
将以下 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();
}