Module jupiter::ig::json

source ·
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());

Functions§