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, Deserializer};
- #[derive(Debug, Deserialize, Serialize)]
- struct Raw {
- foo: String,
- bar: i32,
- }
- type C = Raw;
- impl<'de> Deserialize<'de> for C {
- fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
- where D: Deserializer<'de>
- {
- #[derive(Deserialize)]
- struct Container {
- data: Raw,
- }
- let helper = Container::deserialize(deserializer)?;
- Ok(C{
- foo: helper.data.foo,
- bar: helper.data.bar,
- })
- }
- }
- fn main() {
- let a = r#"{
- "data": {
- "foo": "foo",
- "bar": 12
- }
- }"#;
- let de: C = serde_json::from_str(a).unwrap();
- println!("{}\n{:?}", a, de);
- }
Add Comment
Please, Sign In to add comment