Guest User

Untitled

a guest
Jan 23rd, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. extern crate serde;
  2. #[macro_use]
  3. extern crate serde_derive;
  4. extern crate serde_json;
  5.  
  6. use serde::Deserialize;
  7. use serde::Deserializer;
  8. use std::any::Any;
  9.  
  10. #[derive(Serialize, Deserialize, Debug, Clone)]
  11. pub struct Element {
  12. #[serde(deserialize_with = "parse_color")]
  13. color: String,
  14. }
  15.  
  16. fn parse_color<'de, D>(d: D) -> Result<String, D::Error>
  17. where
  18. D: Deserializer<'de>,
  19. {
  20. Deserialize::deserialize(d).map(|x: Option<_>| x.unwrap_or("black".to_string()))
  21. }
  22. fn main() {
  23. let e: Element = serde_json::from_str("{\"color\": null}").unwrap();
  24. println!("{:?}", e);
  25. }
  26.  
  27. // #[derive(Serialize, Deserialize, Debug, Clone)]
  28. // pub struct Element {
  29. // #[serde(deserialize_with="parse_custom")]
  30. // custom: String,
  31. // }
  32.  
  33. // fn parse_custom<'de, D>(d: D) -> Result<String, D::Error> where D: Deserializer<'de> {
  34. // // let ddd = Deserialize::deserialize(d);
  35. // Ok("black".to_string())
  36. // // .map(|anyy : String| {
  37. // // println!("{:?}",anyy);
  38. // // // x.unwrap_or("black".to_string())
  39. // // "black".to_string()
  40. // // })
  41. // }
  42.  
  43. // fn main() {
  44. // let json_string = r#"{"custom":{"listenerPort":15000,"idleTimeoutSec":"60"}}"#;
  45.  
  46. // let e = serde_json::from_str(json_string);
  47. // println!("{:?}", e);
  48. // }
  49.  
  50. // extern crate serde;
  51. // #[macro_use] extern crate serde_derive;
  52. // extern crate serde_json;
  53.  
  54. // use serde::Deserializer;
  55. // use serde::Deserialize;
Add Comment
Please, Sign In to add comment