Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extern crate serde;
- #[macro_use]
- extern crate serde_derive;
- extern crate serde_json;
- use serde::Deserialize;
- use serde::Deserializer;
- use std::any::Any;
- #[derive(Serialize, Deserialize, Debug, Clone)]
- pub struct Element {
- #[serde(deserialize_with = "parse_color")]
- color: String,
- }
- fn parse_color<'de, D>(d: D) -> Result<String, D::Error>
- where
- D: Deserializer<'de>,
- {
- Deserialize::deserialize(d).map(|x: Option<_>| x.unwrap_or("black".to_string()))
- }
- fn main() {
- let e: Element = serde_json::from_str("{\"color\": null}").unwrap();
- println!("{:?}", e);
- }
- // #[derive(Serialize, Deserialize, Debug, Clone)]
- // pub struct Element {
- // #[serde(deserialize_with="parse_custom")]
- // custom: String,
- // }
- // fn parse_custom<'de, D>(d: D) -> Result<String, D::Error> where D: Deserializer<'de> {
- // // let ddd = Deserialize::deserialize(d);
- // Ok("black".to_string())
- // // .map(|anyy : String| {
- // // println!("{:?}",anyy);
- // // // x.unwrap_or("black".to_string())
- // // "black".to_string()
- // // })
- // }
- // fn main() {
- // let json_string = r#"{"custom":{"listenerPort":15000,"idleTimeoutSec":"60"}}"#;
- // let e = serde_json::from_str(json_string);
- // println!("{:?}", e);
- // }
- // extern crate serde;
- // #[macro_use] extern crate serde_derive;
- // extern crate serde_json;
- // use serde::Deserializer;
- // use serde::Deserialize;
Add Comment
Please, Sign In to add comment