Cargo.toml:
x
[dependencies]
serde = { version = "1.0.130", features = ["derive"] }
serde_json = "1.0"
serde_yaml = "0.9.13"
anyhow = "1.0.55"
src/main.rs:
use anyhow::{anyhow, Result};
use serde_json::Value;
fn main() -> Result<()> {
let json_strings = r#"{"a": 1}
{a: 2}
{"a": 3}"#;
let result = json_strings
.split("\n")
.filter_map(|s| serde_json::from_str::<Value>(s).ok())
.collect::<Vec<_>>();
for item in &result {
let a = item
.get("a")
.ok_or(anyhow!("miss field a"))?
.as_u64()
.ok_or(anyhow!("invalid type of field a"))?;
println!("a: {}", a);
}
println!("{:?}", result);
Ok(())
}