1pub use serde::Deserialize;
2pub use serde::Serialize;
3pub use serde_json::error::Error;
4pub use serde_json::from_reader;
5pub use serde_json::from_slice;
6pub use serde_json::from_str;
7pub use serde_json::from_value;
8pub use serde_json::json;
9pub use serde_json::ser::to_string;
10pub use serde_json::ser::to_string_pretty;
11pub use serde_json::to_value;
12
13pub type Value = serde_json::Value;
14pub type Map = serde_json::Map<String, Value>;
15pub type Number = serde_json::Number;
16
17pub fn map_merge_deep(old: &Map, new: &Map) -> Map {
18 let mut crt = old.clone();
19 for (k, v) in new {
20 let ov = crt.get(k);
21 if let Some(ov) = ov {
22 if let Value::Object(ov) = ov {
23 if let Value::Object(nv) = v {
24 let mv = map_merge_deep(ov, nv);
25 crt.insert(k.clone(), Value::Object(mv));
26 continue;
27 }
28 }
29 }
30 crt.insert(k.clone(), v.clone());
31 }
32 crt
33}