我想要在嵌套的层次结构中打印每个联系人对象的name
。由于联系人对象每次可能没有完全相同数量的字段以构建合适的结构,因此我该如何实现这一点?
extern crate serde_json;
use serde_json::{Error, Value};
use std::collections::HashMap;
fn untyped_example() -> Result<(), Error> {
// Some JSON input data as a &str. Maybe this comes from the user.
let data = r#"{
"name":"John Doe",
"age":43,
"phones":[
"+44 1234567",
"+44 2345678"
],
"contact":{
"name":"Stefan",
"age":23,
"optionalfield":"dummy field",
"phones":[
"12123",
"345346"
],
"contact":{
"name":"James",
"age":34,
"phones":[
"23425",
"98734"
]
}
}
}"#;
let mut d: HashMap<String, Value> = serde_json::from_str(&data)?;
for (str, val) in d {
println!("{}", str);
if str == "contact" {
d = serde_json::from_value(val)?;
}
}
Ok(())
}
fn main() {
untyped_example().unwrap();
}
我对Rust非常陌生,基本上是从JavaScript领域过来的。