如何在 Rust 中将向量写入 JSON 文件?
代码:
use std::fs::File;
use std::io::prelude::*;
let vec1 = vec![1.0,2.0,2.1,0.6];
let mut file = File::create("results.json").unwrap();
let data = serde_json::to_string(&vec1).unwrap();
file.write(&data);
Run Code Online (Sandbox Code Playgroud)
错误:
mismatched types
expected reference `&[u8]`
found reference `&std::string::String`rustc(E0308)
Run Code Online (Sandbox Code Playgroud)
Sve*_*ach 11
您也可以直接将数据写入文件,而不是先将数据写入内存中的字符串:
use std::fs::File;
use std::io::{BufWriter, Write};
fn main() -> std::io::Result<()> {
let vec = vec![1, 2, 3];
let file = File::create("a")?;
let mut writer = BufWriter::new(file);
serde_json::to_writer(&mut writer, &vec)?;
writer.flush()?;
Ok(())
}
Run Code Online (Sandbox Code Playgroud)
这种方法具有较低的内存占用,并且通常是首选。请注意,您应该对文件使用缓冲写入,因为序列化可能会导致对文件进行许多小写入,从而严重降低性能。
如果您出于某种原因需要首先将数据写入内存,我建议使用serde_json::to_vec()而不是serde_json::to_string(),因为该函数会立即给您一个Vec<u8>。
| 归档时间: |
|
| 查看次数: |
4501 次 |
| 最近记录: |