【问题标题】:Deserializing JSON root array with serde_json [duplicate]使用 serde_json 反序列化 JSON 根数组 [重复]
【发布时间】:2017-08-03 10:25:25
【问题描述】:

根据 JSON 规范,JSON 文档的根可以是对象或数组。第一种情况很容易被serde_json使用struct反序列化

#[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);
}

但是我找不到任何关于如何反序列化 structs 的(未命名的)数组的文档。

【问题讨论】:

  • 你尝试了什么?结果如何?

标签: json rust serde


【解决方案1】:

我们只需要将结果声明为该类型的向量:

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

【讨论】:

    猜你喜欢
    • 2020-05-24
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-24
    相关资源
    最近更新 更多