Expand description
Permits to load JSON data into a Doc.
Wraps the given JSON data and returns it as Doc.
§Examples
Loading an object into a doc:
let input = r#"{
"a_string": "Test",
"a_map": { "inner_key": 42 },
"a_list": [ 1, 2, { "test": "Plain String" }],
"a_bool": true
}
"#;
let value: Value = serde_json::from_str(input).unwrap();
let doc = object_to_doc(value.as_object().unwrap()).unwrap();
assert_eq!(
value["a_string"].as_str(),
doc.root().query("a_string").as_str()
);
assert_eq!(
value["a_list"][0].as_i64(),
doc.root().query("a_list").at(0).as_int()
);
assert_eq!(
value["a_list"][1].as_i64(),
doc.root().query("a_list").at(1).as_int()
);
assert_eq!(
value["a_bool"].as_bool().unwrap(),
doc.root().query("a_bool").as_bool()
);
assert_eq!(
value["a_map"]["inner_key"].as_str(),
doc.root().query("a_map.inner_key").as_str()
);
Loading a list into a doc:
let input = r#"[ { "a_string": "Test" }, { "a_string": "Test1" }, { "a_string": "Test2" }, 42 ]"#;
let value: Value = serde_json::from_str(input).unwrap();
let doc = list_to_doc(value.as_array().unwrap()).unwrap();
assert_eq!(doc.root().len(), 4);
assert_eq!(value[0]["a_string"].as_str(), doc.root().at(0).query("a_string").as_str());
assert_eq!(value[1]["a_string"].as_str(), doc.root().at(1).query("a_string").as_str());
assert_eq!(value[2]["a_string"].as_str(), doc.root().at(2).query("a_string").as_str());
assert_eq!(value[3].as_i64(), doc.root().at(3).as_int());