使用serde_json反序列化JSON根数组

4
根据JSON规范,JSON文档的根可以是对象或数组。第一种情况可以使用serde_jsonstruct轻松反序列化。
#[derive(Deserialize)]
struct Person {
    first_name: String,
    last_name: String,
}

fn main() {
    let s = r#"[{"first_name": "John", "last_name": "Doe"}]"#;

    // this will break because we have a top-level array
    let p: Person = serde_json::from_str(s).unwrap();
    println!("Name: {} {}", p.first_name, p.last_name);
}

然而,我无法找到任何关于如何反序列化一个(未命名的)struct数组的文档。


2
你尝试了什么?结果是什么? - Peter Hall
1个回答

8
我们只需声明结果为该类型的向量即可:

let p: Vec<Person> = serde_json::from_str(s).unwrap();
println!("Name: {} {}", p[0].first_name, p[0].last_name);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接