如何将向量写入json文件?

Alg*_*goQ 1 json vector rust

如何在 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>