Guest User

Untitled

a guest
Oct 19th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.94 KB | None | 0 0
  1. extern crate serde; // 1.0.78
  2. #[macro_use]
  3. extern crate serde_derive; // 1.0.78
  4. extern crate serde_json; // 1.0.27
  5.  
  6. use std::collections::BTreeMap;
  7.  
  8. static DEFAULT: &'static str = r###"{
  9. "value": 0,
  10. "eventType": "default",
  11. "payload": {
  12. "text": "it's text!",
  13. "number": 23,
  14. "map": {
  15. "key": "value"
  16. },
  17. "list": [0, 1, 2]
  18. }
  19. }"###;
  20.  
  21. #[derive(Debug,Deserialize)]
  22. pub struct Event {
  23. value: u64,
  24. payload: EventPayload,
  25. }
  26.  
  27. #[derive(Debug,Deserialize)]
  28. #[serde(tag="eventType", content="payload")]
  29. pub enum EventPayload {
  30. #[serde(rename="default")]
  31. Default(DefaultEventPayload),
  32. }
  33.  
  34. #[derive(Debug,Deserialize)]
  35. pub struct DefaultEventPayload {
  36. text: String,
  37. number: u64,
  38. #[serde(default)]
  39. map: BTreeMap<String, String>,
  40. #[serde(default)]
  41. list: Vec<u64>
  42. }
  43.  
  44. fn main() {
  45. let value: Event = serde_json::from_str(&DEFAULT).unwrap();
  46. println!("{:?}", value);
  47. }
Add Comment
Please, Sign In to add comment