Read lists of JSON structures JSON-lines
TODO
-
See also jsonl, json-lines
{ "name": "Foo", "number": 10 }
{ "name": "Bar", "number": 20 }
Code
use serde::Deserialize;
#[derive(Deserialize, Debug)]
#[allow(dead_code)]
struct Thing {
name: String,
number: u32,
}
fn main() {
let filename = "data.json";
let content = std::fs::read_to_string(filename).unwrap();
for row in content.split('\n') {
if row.is_empty() {
continue;
}
//println!("row: {row}");
let data = serde_json::from_str::<Thing>(row).unwrap();
println!("data: {data:#?}");
}
// let mut content_as_bytes = std::fs::read(filename).unwrap();
// json_lines::from_bytes(&mut content_as_bytes)
// .map(|thing: Thing| {
// println!("thing: {thing:#?}");
// })
// .unwrap();
}
Output
data: Thing {
name: "Foo",
number: 10,
}
data: Thing {
name: "Bar",
number: 20,
}
Cargo.toml
[package]
name = "read-list-of-json"
version = "0.1.0"
edition = "2024"
[dependencies]
json-lines = "0.1.1"
serde = { version = "1.0.204", features = ["derive"] }
serde_json = "1.0.120"