Guest User

Untitled

a guest
Apr 26th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.82 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, Deserializer};
  7.  
  8. #[derive(Debug, Deserialize, Serialize)]
  9. struct Raw {
  10. foo: String,
  11. bar: i32,
  12. }
  13.  
  14. type C = Raw;
  15.  
  16. impl<'de> Deserialize<'de> for C {
  17. fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
  18. where D: Deserializer<'de>
  19. {
  20. #[derive(Deserialize)]
  21. struct Container {
  22. data: Raw,
  23. }
  24.  
  25. let helper = Container::deserialize(deserializer)?;
  26.  
  27. Ok(C{
  28. foo: helper.data.foo,
  29. bar: helper.data.bar,
  30. })
  31. }
  32. }
  33.  
  34. fn main() {
  35. let a = r#"{
  36. "data": {
  37. "foo": "foo",
  38. "bar": 12
  39. }
  40. }"#;
  41. let de: C = serde_json::from_str(a).unwrap();
  42. println!("{}\n{:?}", a, de);
  43. }
Add Comment
Please, Sign In to add comment