Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extern crate serde; // 1.0.78
- #[macro_use]
- extern crate serde_derive; // 1.0.78
- extern crate serde_json; // 1.0.27
- use std::collections::BTreeMap;
- static DEFAULT: &'static str = r###"{
- "value": 0,
- "eventType": "default",
- "payload": {
- "text": "it's text!",
- "number": 23,
- "map": {
- "key": "value"
- },
- "list": [0, 1, 2]
- }
- }"###;
- #[derive(Debug,Deserialize)]
- pub struct Event {
- value: u64,
- payload: EventPayload,
- }
- #[derive(Debug,Deserialize)]
- #[serde(tag="eventType", content="payload")]
- pub enum EventPayload {
- #[serde(rename="default")]
- Default(DefaultEventPayload),
- }
- #[derive(Debug,Deserialize)]
- pub struct DefaultEventPayload {
- text: String,
- number: u64,
- #[serde(default)]
- map: BTreeMap<String, String>,
- #[serde(default)]
- list: Vec<u64>
- }
- fn main() {
- let value: Event = serde_json::from_str(&DEFAULT).unwrap();
- println!("{:?}", value);
- }
Add Comment
Please, Sign In to add comment