extern crate messy_json; use messy_json::*; use serde::{de::DeserializeSeed, Deserialize, Serialize}; use serde_json::Value; use std::borrow::Cow; const DUMMY_OBJ: &str = r#" { "hello": { "hola": "world" } } "#; #[derive(Debug, Serialize, Deserialize)] struct DummySerdeStructNested<'a> { hola: Cow<'a, str>, } #[derive(Debug, Serialize, Deserialize)] struct DummySerdeStruct<'a> { hello: DummySerdeStructNested<'a>, } fn parse_serde_value() -> Value { serde_json::from_str(DUMMY_OBJ).unwrap() } fn parse_serde_struct() -> DummySerdeStruct<'static> { serde_json::from_str(DUMMY_OBJ).unwrap() } fn gen_messy_json_schema() -> MessyJson { MessyJson::from(MessyJsonInner::Obj(MessyJsonObject::from( MessyJsonObjectInner::new( vec![( arcstr::literal!("hello"), MessyJson::from(MessyJsonInner::Obj(MessyJsonObject::from( MessyJsonObjectInner::new( vec![( arcstr::literal!("hola"), MessyJson::from(MessyJsonInner::String(MessyJsonScalar::new(false))), )] .into_iter() .collect(), false, ), ))), )] .into_iter() .collect(), false, ), ))) } fn parse_messy_json<'a>(schema: &MessyJson) -> MessyJsonValueContainer<'a> { let mut deserializer = serde_json::Deserializer::from_str(DUMMY_OBJ); schema .builder(MessyJsonSettings::default()) .deserialize(&mut deserializer) .unwrap() } fn main() { let prepared = gen_messy_json_schema(); println!("Struct : {:#?}", parse_serde_struct()); println!("Value : {:#?}", parse_serde_value()); println!("MessyJsonValue : {:#?}", parse_messy_json(&prepared)); }