[−][src]Crate serde_path_to_error
Find out the path at which a deserialization error occurred. This crate
provides a wrapper that works with any existing Serde Deserializer
and
exposes the chain of field names leading to the error.
Example
use serde::Deserialize; use std::collections::BTreeMap as Map; #[derive(Deserialize)] struct Package { name: String, dependencies: Map<String, Dependency>, } #[derive(Deserialize)] struct Dependency { version: String, } fn main() { let j = r#"{ "name": "demo", "dependencies": { "serde": { "version": 1 } } }"#; // Some Deserializer. let jd = &mut serde_json::Deserializer::from_str(j); let result: Result<Package, _> = serde_path_to_error::deserialize(jd); match result { Ok(_) => panic!("expected a type error"), Err(err) => { let path = err.path().to_string(); assert_eq!(path, "dependencies.serde.version"); } } }
Structs
Deserializer | Deserializer adapter that records path to deserialization errors. |
Error | Original deserializer error together with the path at which it occurred. |
Path | Path to the error value in the input, like |
Segments | Iterator over segments of a path. |
Track | State for bookkeeping across nested deserializer calls. |
Enums
Segment | Single segment of a path. |
Functions
deserialize | Entry point. See crate documentation for an example. |