Function deserialize_custom_strings::deserialize_u64 [−][src]
pub fn deserialize_u64<'de, D>(deserializer: D) -> Result<u64, D::Error> where
D: Deserializer<'de>,
Expand description
In case you encounter a JSON API that does not return the u64
as a number like you handsome and smart person deserve, but
instead wraps it in a String
, like:
use serde::Deserialize; use serde_json::{Error, from_str}; #[derive(Deserialize)] struct Foo { definetly_a_u64: u64, } let json = r#"{ "definetly_a_u64": "0123456789" }"#; let foo: Result<Foo, Error> = from_str(json); assert!(foo.is_err());
Make the above code working with:
use serde::Deserialize; use serde_json::{Error, from_str}; use deserialize_custom_strings::deserialize_u64; #[derive(Deserialize)] struct Foo { #[serde(deserialize_with = "deserialize_u64")] definetly_a_u64: u64, } let json = r#"{ "definetly_a_u64": "0123456789" }"#; let foo: Result<Foo, Error> = from_str(json); assert!(foo.is_ok()); assert_eq!(foo.unwrap().definetly_a_u64, 123456789);