use crate::tree::Tree;
impl Tree {
pub fn from_json(json: &str) -> Result<Self, serde_json::Error> {
serde_json::from_str(json)
}
pub fn to_json(&self) -> Result<String, serde_json::Error> {
serde_json::to_string(self)
}
pub fn to_json_pretty(&self) -> Result<String, serde_json::Error> {
serde_json::to_string_pretty(self)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_json_roundtrip() {
let tree = Tree::Node(
"root".to_string(),
vec![
Tree::Leaf(vec!["item1".to_string()]),
Tree::Node(
"sub".to_string(),
vec![Tree::Leaf(vec!["subitem".to_string()])],
),
],
);
let json = tree.to_json().unwrap();
let deserialized = Tree::from_json(&json).unwrap();
assert_eq!(tree, deserialized);
}
}