假设使用以下JSON:
{
"person": {
"first_name": "Ala",
"last_name": "Makota"
}
}
是否可以将此对象反序列化为如下所示的结构,而跳过"person"
?
#[derive(Deserialize)]
struct Person {
first_name: String,
last_name: String,
}
很容易将JSON对象反序列化为包装的结构,如下所示:
#[derive(Deserialize)]
struct Object {
person: Person
}
但就我而言,我只对Person
结构感兴趣。
编辑:
虽然我知道我可以像使用serde_json
一样使用Value
的{{1}}类型对JSON进行操作,但我对利用{ {1}},也许还有一些属性可以实现我的目标。
答案 0 :(得分:2)
将json视为具有“ person”键和Person
值的映射,可以反序列化为HashMap
然后检索Person
值。
let person = r#"
{
"person": {
"first_name": "Ala",
"last_name": "Makota"
}
}
"#;
let deserialized = serde_json::from_str::<HashMap<&str, Person>>(&person);
turbo fish ::<HashMap<&str, Person>>
被用作一种紧凑的方式来帮助编译器确定反序列化的类型。