use serde::Deserialize; #[derive(Deserialize)] struct ServiceConfig { service: String, retries: u8, enabled: bool, } fn parse_config(input: &str) -> Result { serde_json::from_str(input) } fn print_config(input: &str) { match parse_config(input) { Ok(config) => { println!( "loaded service={} retries={} enabled={}", config.service, config.retries, config.enabled ); } Err(err) => println!("invalid JSON: {err}"), } } fn main() { let valid_json = r#"{"service":"billing","retries":3,"enabled":true}"#; let invalid_json = r#"{"service":"billing","retries":3,"enabled":true,}"#; print_config(valid_json); print_config(invalid_json); }