面试题答案
一键面试-
引入依赖和特性:
- 在
Cargo.toml
文件中添加以下依赖:
[dependencies] serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" std::fs::File;
- 代码中需要为
HashMap
结构体派生Serialize
和Deserialize
特性。
- 在
-
序列化代码逻辑:
use std::collections::HashMap; use std::fs::File; use serde::{Serialize, Deserialize}; use serde_json; fn serialize_to_file(map: &HashMap<String, i32>, file_path: &str) -> Result<(), serde_json::Error> { let serialized = serde_json::to_string_pretty(map)?; let mut file = File::create(file_path)?; file.write_all(serialized.as_bytes())?; Ok(()) }
-
反序列化代码逻辑:
fn deserialize_from_file(file_path: &str) -> Result<HashMap<String, i32>, serde_json::Error> { let file = File::open(file_path)?; let map: HashMap<String, i32> = serde_json::from_reader(file)?; Ok(map) }
-
示例使用:
fn main() { let mut map = HashMap::new(); map.insert("key1".to_string(), 1); map.insert("key2".to_string(), 2); let file_path = "output.json"; serialize_to_file(&map, file_path).unwrap(); let deserialized_map = deserialize_from_file(file_path).unwrap(); println!("Deserialized map: {:?}", deserialized_map); }
以上代码中,serialize_to_file
函数将HashMap
序列化为漂亮格式的JSON字符串并写入文件,deserialize_from_file
函数从文件中读取并反序列化为HashMap
。在main
函数中展示了简单的使用示例。