How can I deserialize JSON with a top-level array using Serde?

前端 未结 1 568
日久生厌
日久生厌 2020-11-29 10:43

I have a some JSON data that is returned from a web service. The JSON is a top-level array:

[
    {
        \"data\": \"value1\"
    },
    {
        \"data\         


        
相关标签:
1条回答
  • 2020-11-29 10:51

    You can use a Vec:

    extern crate serde;
    extern crate serde_json;
    
    #[macro_use]
    extern crate serde_derive;
    
    use serde_json::Error;
    
    #[derive(Serialize, Deserialize, Debug)]
    struct Foo {
        data: String,
    }
    
    fn typed_example() -> Result<(), Error> {
        let data = r#"[
            {
                "data": "value1"
            },
            {
                "data": "value2"
            },
            {
                "data": "value3"
            }
        ]"#;
    
        let array: Vec<Foo> = serde_json::from_str(data)?;
    
        for elem in array.iter() {
            println!("{:?}", elem);
        }
        Ok(())
    }
    
    fn main() {
        typed_example().unwrap();
    }
    
    0 讨论(0)
提交回复
热议问题