1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
use serde_json::json;
use serde_json::Value;
pub fn get_deep_value(arg: &str, value: &Value) -> Value {
let splits: Vec<&str> = arg.split(".").collect();
let mut v = value;
for item in splits {
if item.is_empty() {
continue;
}
v = v.get(item).unwrap_or(&Value::Null);
}
return v.clone();
}
#[test]
pub fn test_get_deep_value() {
let john = json!({
"a": {
"name":"job",
},
});
let v = get_deep_value("a.name", &john);
println!("{}", v);
}