use laminate::FlexValue;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let data = FlexValue::from_json(
r#"{
"name": "Alice",
"port": "8080",
"debug": "true",
"score": "95.5",
"workers": 4
}"#,
)?;
let name: String = data.extract("name")?;
let port: u16 = data.extract("port")?; let debug: bool = data.extract("debug")?; let score: f64 = data.extract("score")?; let workers: i32 = data.extract("workers")?;
println!("name={name}, port={port}, debug={debug}, score={score}, workers={workers}");
let nested = FlexValue::from_json(
r#"{
"user": {
"profile": {
"email": "alice@example.com"
},
"scores": [98, 85, 92]
}
}"#,
)?;
let email: String = nested.extract("user.profile.email")?;
let first_score: i64 = nested.extract("user.scores[0]")?;
println!("email={email}, first_score={first_score}");
let missing: Option<String> = nested.maybe("user.profile.phone")?;
println!("phone={missing:?}");
Ok(())
}