2017-06-18 49 views
1

我有一个从Web服务返回的一些JSON数据,JSON的是一个顶级阵列,像这样:锈反序列化JSON与顶级阵列

[ 
    { 
     "data": "value1" 
    }, 
    { 
     "data": "value2" 
    }, 
    { 
     "data": "value3" 
    } 
] 

使用serde_derive使struct是我能可以反序列化数组中包含的数据,但是,我无法获得serde来反序列化顶层数组。

我是否错过了某些东西,或者serde不能反序列化顶级数组?

+0

请仔细阅读[问],特别是[MCVE。 – Stargateur

回答

4

您可以使用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

非常感谢,我对Rust很新,我应该看看。 – Noskcaj