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"]);