Function dot_json::value_to_dot
[−]
[src]
pub fn value_to_dot(src: &Value) -> Value
Create a flat dot map from a serde_json::Value::{Array, Object} while just cloning any other value
Examples
use serde_json::{Map, Value, from_str}; let data = json!({ "foo": "Lorem ipsum", "bar": [null, 123, true], "baz": { "qux": 789 } }); let dot_map = value_to_dot(&data); assert_eq!(Value::String("Lorem ipsum".to_string()), dot_map["foo"]); assert_eq!(Value::Null, dot_map["bar.0"]); assert_eq!(Value::Number(123.into()), dot_map["bar.1"]); assert_eq!(Value::Bool(true), dot_map["bar.2"]); assert_eq!(Value::Number(789.into()), dot_map["baz.qux"]);
use serde_json::{Map, Value, from_str}; assert_eq!(Value::String("Lorem ipsum".to_string()), value_to_dot(&Value::String("Lorem ipsum".to_string()))); assert_eq!(Value::Null, value_to_dot(&Value::Null)); assert_eq!(Value::Number(123.into()), value_to_dot(&Value::Number(123.into()))); assert_eq!(Value::Bool(true), value_to_dot(&Value::Bool(true))); let dot_map = value_to_dot(&Value::Array(vec![ Value::Bool(true), Value::Bool(false), Value::Array(vec![ Value::Number(123.into()), ]), ])); assert_eq!(Value::Bool(true), dot_map["0"]); assert_eq!(Value::Bool(false), dot_map["1"]); assert_eq!(Value::Number(123.into()), dot_map["2.0"]);