rust_dynamic 0.49.0

Support for dynamically-typed values in run-time
Documentation
use crate::value::Value;
use crate::types::*;
use easy_error::{Error, bail};
use serde_json::{from_str as json_from_string};

impl Value {
    pub fn to_json(&self) -> Result<String, Error> {
        match self.conv(STRING) {
            Ok(j_value_str) => {
                match j_value_str.cast_string() {
                    Ok(str_data) => {
                        return Ok(str_data);
                    }
                    Err(err) => {
                        bail!("{}", err);
                    }
                }
            }
            Err(err) => {
                bail!("{}", err);
            }
        }
    }
    pub fn from_json(data: String) -> Result<Value, Error> {
        match json_from_string(&data) {
            Ok(j_value) => {
                let json_value = Value::json(j_value);
                match json_value.cast_json_to_value() {
                    Ok(value) => {
                        return Ok(value);
                    }
                    Err(err) => {
                        bail!("{}", err);
                    }
                }
            }
            Err(err) => {
                bail!("{}", err);
            }
        }
    }
}