【发布时间】:2019-09-11 20:34:40
【问题描述】:
我想从 Rust 中的文件/阅读器中读取多个 JSON 对象,一次一个。不幸的是serde_json::from_reader(...) 只读取到文件结束;似乎没有任何方法可以使用它来读取单个对象或懒惰地迭代对象。
有没有办法做到这一点?使用 serde_json 是理想的,但如果有不同的库,我愿意使用它。
目前我将每个对象放在单独的行上并单独解析它们,但我真的不想这样做。
使用示例
main.rs
use serde_json;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let stdin = std::io::stdin();
let stdin = stdin.lock();
for item in serde_json::iter_from_reader(stdin) {
println!("Got {:?}", item);
}
Ok(())
}
in.txt
{"foo": ["bar", "baz"]} 1 2 [] 4 5 6
示例会话
Got Object({"foo": Array([String("bar"), String("baz")])})
Got Number(1)
Got Number(2)
Got Array([])
Got Number(4)
Got Number(5)
Got Number(6)
【问题讨论】:
-
当我在 Serde 文档中发现这个作为内置功能时,我不得不在 it having been such a pain to get this behaviour in Python 之后分享。 :)
标签: json serialization rust